繁体   English   中英

SimpleDateFormat返回无效日期

[英]SimpleDateFormat returns invalid date

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

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);
  }
}

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

例:

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

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

我究竟做错了什么?

可能看起来你用mm来表示months ,但它应该是MM 看看文档

M月份

一小时一分钟

尝试:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

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

看起来您的日期格式字符串不正确。 这有效:

public static void dateFormat(){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(format.format(new Date()));
    }

结果:

2013年7月29日

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM