我面临着一个我以前从未见过的非常奇怪的问题。我有一个以毫秒为单位的日期,并希望将其显示为可读日期。这是我的代码:
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
我得到结束日期的结果。
我做错了什么?
答案 0 :(得分:9)
可能您似乎使用mm
来表示months
,但它应该是MM
。查看documentation。
M月份
每小时一分钟
尝试:
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
答案 1 :(得分:5)
你得到分钟而不是几个月。你的模式应该是这样的:“dd.MM.yyyy”
答案 2 :(得分:0)
看起来您的日期格式字符串不正确。这有效:
public static void dateFormat(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(format.format(new Date()));
}
结果:
2013年7月29日