[英]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.