SimpleDateFormat返回无效日期

jos*_*usa 3 java simpledateformat

我面临着一个我以前从未见过的奇怪问题.我有一个以毫秒为单位的日期,并希望将其显示为可读日期.这是我的代码:

if (validUntil == 0) {
  return activity.getResources().getString(R.string.forever);
} else {
  Date startDate = new Date(validFrom);
  Date endDate = new Date(validUntil);
  if (startDate.compareTo(endDate) < 0) {
    String date = sdf.format(startDate) + " - " + sdf.format(endDate);
    return date;
  } else if (startDate.compareTo(endDate) == 0) {
    return activity.getResources().getString(R.string.forever);
  }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我只想创建一个显示时间跨度的字符串.当我调试到我的代码时,日期对象包含正确的值,同时sdf.format(...)给我一个无效的日期.

例:

  • startdate 以毫秒为单位: 1375017555000
  • startdate 对象包含: Sun Jul 28 15:19:15 CEST 2013
  • sdf.format(startDate) 收益: 28.19.2013

我得到了结束日期的结果.

我究竟做错了什么?

NIN*_*OOP 9

可能看起来你已经习惯mmmonths,但它应该是MM.看看文档.

M月份

一小时一分钟

尝试:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
Run Code Online (Sandbox Code Playgroud)


Sem*_*lov 5

你得到分钟而不是几个月.你的模式应该是这样的:"dd.MM.yyyy"