为什么 Java SimpleDateFormat().parse() 打印奇怪的格式?
我的输入是字符串,格式如下:
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)?为什么日期是错误的?我只是想保持原始 String 日期的相同格式并将其变成 Date 对象。
我使用的是 Netbeans 6.8 Mac 版本。
My input is String formated as the following:
3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM
My code is:
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();
}
the output is:
Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010
I'm not sure from where the day (Sun) came from? or (AST)? and why the date is wrong? I just wanted to keep the same format of the original String date and make it into a Date object.
I'm using Netbeans 6.8 Mac version.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
应该是MM,不是mm。小写的 mm 表示分钟,而不是几个月。
Should be MM, not mm. The lowercase mm is for minutes, not months.
MM
,而不是mm
几个月了。您使用了mm
两次 - 从逻辑上讲,这是相同的事情 - 分钟。MM
, notmm
for months. You are usingmm
twice - and logically, it's the same things - minutes.如果要以原始格式打印日期,请使用 format 方法:
the "weird" format comes from Date's toString implementation, the javadoc says:
Converts this Date object to a String of the form:
道琼斯指数 dd hh:mm:ss zzz yyyy
Date 对象旨在表示特定的时刻,您无法将原始字符串的格式保留在其中,这就是我们拥有 DateFormat 类的原因。
If you want to print the date in the original format, use the format method:
the "weird" format comes from Date's toString implementation, the javadoc says:
Converts this Date object to a String of the form:
dow mon dd hh:mm:ss zzz yyyy
The Date Object is intended to represent a specific instant in time, you can't keep the format of the original string into it, that's why we have the DateFormat Class.
答案很简单。您显示了今天的 Date.toString() 值,而不是预期的 dateFormat 版本。你需要的是:
The answer is simple. You have displayed the Date.toString() value of today and not the intended dateFormat version. what you require is:
使用 System.out.println() 打印日期会导致 toString() 方法在 Date 对象上调用。
toString() 中使用的格式字符串导致星期几和时区出现在输出中。
这与 Duffy 指出的解析错误不同。
Printing the Date out using System.out.println() results in the toString() method being called on the Date object.
The format string used in toString() is what is causing the Day of the week and the timezone to appear in the output.
This is apart from the parsing mistake pointed out by Duffy.