从外部服务中,我得到Date+Time
字段的对象为String
的格式为2012-03-07 12:12:23.547
,我需要比较这些字段以获取对象的正确顺序。我很清楚,我可以通过例如创建Date
对象。 SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”)并比较两个Date
的实现,但我的问题是如果我可以依靠正确的排序顺序,如果我将它们比作字符串,如String.compareTo(String)
?一些轻度测试给我的印象是,它的工作原理,但我想知道是否有人知道任何情况下,它不会给我正确的结果?还有,比较String
的Vs解析到日期进行比较是否有任何性能考虑因素,优点或缺点?Java:可以将日期作为字符串进行比较
回答
假设小时格式为24小时格式,那么是的,这是一种可排序的日期/时间格式 - 其众所周知的好处之一是您可以在没有实际解析的情况下进行排序。
一个缺点是:如果你收到了不好的数据,你就不会发现它 - 你会把它整齐地分类到“正确的”地方,而忽略了你被给予(说)2月30日的事实。
如果您以后需要将值作为日期/时间,那么我会先解析它然后进行比较。但是如果你只需要需要这样的排序,字符串比较可能比解析一切都快。值得进行基准测试,当然......特别是在同一天比较两个字符串将需要几个字符 - 值得检查,而如果你已经解析了它,那么可能只是比较long
的值。
感谢Jon +提供答案的其他人。 – hgus1294 2012-03-07 11:48:18
不,更好的方法是解析日期对象中的字符串,然后与其他日期对象进行比较。
我不担心性能,除非你有理由认为这个代码会成为一个瓶颈(在循环内被称为很多次),甚至在那之前我会等到你可以做一些具体的性能测试。
将它们作为日期进行比较将使您的代码更加清晰,并且意味着您将来可以更轻松地更改日期格式(对于不按字符串排序的内容)。
使用它表示的类型 - 在这种情况下,它是使用日期的日期。通过将日期添加到集合中并在日期上执行Collections.sort(日期),可以将日期按时间顺序轻松排序。
见http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
它的工作原理提供
- 您从最显著责令领域最显著。
- 您使用数字字段(不是1月/ 2月),它们是相同的宽度。例如2:15在12:15之后但是02:15之前如预期那样。注意:在9999之后和0001之前的这段时间内,这将不起作用。
- 您接受可能无法检测到无效日期。
我认为日期是比较或可以比较通过更快的毫秒(长)。这可能是更安全的方式,你不需要考虑字符串比较不适合的情况。
- 1. 如何将字符串与日历日期进行比较?
- 2. 无法将日期与转换为日期的字符串进行比较
- 3. 将字符串转换为日期并与curent日期进行比较
- 4. 在Java中比较日期字符串
- 5. 是否可以将数字的字符串作为数字进行比较?
- 6. 日期/字符串比较
- 7. 字符串日期比较
- 8. 如何将日期与JavaScript中的字符串进行比较?
- 9. 将日期字符串与NSPredicate进行比较
- 10. 如何将日期字符串与当前日期进行比较?
- 11. 是否可以将字符串与变量进行比较?
- 12. Java - 将单个字符与字符串进行比较
- 13. java中的日期比较(字符串和日期)
- 14. 将sqlite与字符串进行比较
- 15. 将char与字符串进行比较
- 16. 将Arraylist与字符串进行比较
- 17. 将字符串日期与当前较长时间进行比较
- 18. 将字符串作为列表对象进行比较
- 19. 将Python地址作为字符串或整数进行比较?
- 20. 从Firebase获取日期作为字符串转换为日期并将该日期与当前日期进行比较,以分钟为单位查找差异
- 21. 字符串与日期字段比较
- 22. 提取字符串并与日期进行比较
- 23. 在打字稿中比较日期作为字符串
- 24. SQL Server如何将日期与字符串文字进行比较?
- 25. 将两个字符串与“==”进行比较:它何时可以工作?
- 26. 如何获取字符串中的日期并使用java进行比较
- 27. 比较日期和字符串中PDO
- 28. 在python中比较日期字符串
- 29. 比较日期字符串与时区
- 30. 比较两个字符串日期硒
提供您的日期格式始终保持在年份分裂秒数应该是好的,实际上可能比转换为日期然后比较更有效。如果您的日期格式发生变化,您可能会遇到麻烦。 – mcfinnigan 2012-03-07 11:27:24