我已经有了一个大概的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()两个值进行比较会是一个更好的主意......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top