Java SimpleDateFormat 和 CompareTo
我有一个关于 SimpleDateFormat 类和 java.util.Date 的 Compareto 方法的问题:
我正在构造一个 Date 对象,然后进行格式化,最后解析格式化的字符串并与原始日期进行比较。
DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();
String s = df.format(originalDate);
Date parsedDate = df.parse(s);
System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));
结果:
原始日期:欧洲中部时间 1 月 25 日星期一 15:43:23 2010 格式化日期:2010.jan.25 03:43:23 868 原始日期 比较 解析日期:1
为什么我总是得到“1”?为什么原始日期大于解析日期?
I've got a question about SimpleDateFormat class and the java.util.Date's compareto method:
I'm constructing a Date object, then I format, finally I parse the formatted string and compare to the original date.
DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();
String s = df.format(originalDate);
Date parsedDate = df.parse(s);
System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));
The result:
Original date: Mon Jan 25 15:43:23 CET
2010 Formatted date: 2010.jan.25
03:43:23 868 originalDate compareTo
parsedDate: 1
Why I am getting always "1"? Why the original date grater than the parsed date?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为这是一个与 24 小时相关的问题,你的原始日期是 15 点,所以是下午 3 点,而你解析的日期是 12 小时格式,这是因为你使用了 h 格式说明符而不是 H 格式说明符。然后,您的小时会变成错误的字符串,因此您会失去精度,因为解析回
03
时会被视为凌晨 3 点。尝试使用:I think it's a 24h related problem, your original date it's 15, so 3PM, while your parsed one is in 12 hours format, this because you used h format specifier instead of H format specifier. You hour is then turned into the wrong string so you lose precision because when parsed back
03
is considered 3AM. Try with:如果您添加 Am/pm 标记 -
a
,它就会起作用It works if you add the Am/pm marker -
a
如果您只想比较日期,也许使用 getTime() 来比较两个值会是一个更好的主意......
If you wish to merely compare the dates, perhaps using getTime() to compare the two values would be a better idea...