我的输入是字符串格式如下:
3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM
我的代码是:
DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss aa");
try
{
Date today = dateFormat.parse(time);
System.out.println("Date Time : " + today);
}
catch (ParseException e)
{
e.printStackTrace();
}
输出是:
Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010
我不确定那天(太阳)来自哪里?还是(AST)?为什么日期错了?我只想保持原始字符串日期的相同格式,并将其设置为日期对象。
我正在使用Netbeans 6.8 Mac版。
答案 0 :(得分:7)
应该是MM,而不是mm。小写mm是几分钟,而不是几个月。
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
答案 1 :(得分:4)
MM
,而不是mm
几个月。您正在使用mm
两次 - 从逻辑上讲,这是相同的事情 - 分钟。
答案 2 :(得分:3)
如果要以原始格式打印日期,请使用格式化方法:
System.out.println("Date Time : "+ dateFormat.format(today));
“怪异”格式来自Date的toString实现,javadoc说:
dow mon dd hh:mm:ss zzz yyyy
"I just wanted to keep the same format of the original String date and make it into a Date object."
日期对象旨在表示特定的时刻,您不能将原始字符串的格式保留在其中,这就是我们拥有DateFormat类的原因。
答案 3 :(得分:2)
答案很简单。您已显示今天的Date.toString()值,而不是预期的dateFormat版本。你需要的是:
System.out.println("Date Time : " + dateFormat.format(today) );
答案 4 :(得分:1)
使用System.out.println()打印日期会导致在Date对象上调用toString()方法。
toString()中使用的格式字符串是导致星期几和时区出现在输出中的原因。
这与Duffy指出的解析错误不同。