從外部服務中,我得到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. 將日期字符串與NSPredicate進行比較
- 4. 如何將日期與JavaScript中的字符串進行比較?
- 5. 如何將日期字符串與當前日期進行比較?
- 6. 將char與字符串進行比較
- 7. 將Arraylist與字符串進行比較
- 8. 字符串與日期字段比較
- 9. 從Firebase獲取日期作爲字符串轉換爲日期並將該日期與當前日期進行比較,以分鐘爲單位查找差異
- 10. 在打字稿中比較日期作爲字符串
- 11. 提取字符串並與日期進行比較
- 12. 將兩個字符串與「==」進行比較:它何時可以工作?
- 13. 在python中比較日期字符串
- 14. MySQL:比較日期字符串?
- 15. 字符串日期比較C#
- 16. VB.NET如何比較字符串日期
- 17. 比較類型的日期字符串
- 18. 比較字符串日期html的
- 19. 比較兩個字符串日期硒
- 20. 比較字符串到訪問日期
- 21. Java/Webdriver - 將字符串中指定的日期與今天的日期進行比較
- 22. MySQL:無法正確比較字符串值作爲日期
- 23. 將兩個日期比較爲字符串
- 24. 將字符串與數組中的字符串進行比較
- 25. 將字符串網址與字符串值進行比較
- 26. 將字符串與其他字符串進行排序比較
- 27. 將數組字符串與字符串進行比較
- 28. 將大數字轉換爲字符串格式進行比較
- 29. Java:如何將字符串與toString()的返回進行比較
- 30. 如何將字符串與find子句中的日期進行比較?
提供您的日期格式始終保持在年份分裂秒數應該是好的,實際上可能比轉換爲日期然後比較更有效。如果您的日期格式發生變化,您可能會遇到麻煩。 – mcfinnigan 2012-03-07 11:27:24