的Java的SimpleDateFormat和的compareTo
-
18-09-2019 - |
题
我已经有了一个大概的SimpleDateFormat类问题和java.util.Date的compareTo方法:
我构建日期对象,那么I格式,最后我解析格式的字符串,并比较原始日期。
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日十五点43分23秒CET 2010格式的日期:2010.jan.25 3时43分23秒868 originalDate的compareTo parsedDate:1
为什么我总是得到“1”?为什么原来的日期研磨器比解析日期?
解决方案
我认为这是一个24小时的相关问题,你原来的日期是15,所以下午3点,而你解析一个是12小时制,这是因为你使用的 ^ h 格式说明,而不是 ^ h 强>格式说明符。然后,您小时变成了错误的字符串,那么你是因为解析回来的时候03
被认为3AM失去精度。尝试用:
DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");
其他提示
它的工作原理,如果你添加的AM / PM标记 - a
DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");
如果您希望只比较的日期,可能使用的getTime()两个值进行比较会是一个更好的主意......
不隶属于 StackOverflow