簡體   English   中英

Java 日期轉換為字符串並返回日期,相等性檢查失敗

[英]Java Date conversion to String and back to Date, fail equality check

我已經編寫了一些 class 編碼解碼例程到 json 並返回。 除了一種明確的類型是 Date 之外,這有效

沒有顯示完整的庫,這是我的問題

Date now = Date.newInstance()
println "now : $now"
Date reconverted = new SimpleDateFormat('EEE MMM dd HH:mm:ss Z yyyy').parse(now.toString())
println "reconverted : $reconverted"

assert reconverted == now  //this assertion fails 

如果您查看 output 字符串文本,它們是相同的。 但是“重新轉換”的 object 不等於“現在”的 object。

這是由於 Date 中某處的精度丟失造成的嗎? 我曾假設重建的值是相等的。

這只是一個問題,因為如果 class 具有日期字段,我無法斷言我的編碼/解碼 class 實例是相同的

我的 LocalDateTime 編碼/解碼沒有這個問題,我的解碼解析看起來像這樣

LocalDateTime.parse (jsonStrValue) 

當我檢查等效性時工作正常

我錯過了什么停止這個工作的日期?

如評論中所述,您的解析不包括毫秒。 如果您對時間不感興趣,可以使用一些 java.util.Date 擴展方法來獲得可比較的結果。

def today = new Date().clearTime() // requires groovy-dateutil library for Groovy 2.5+
def parsed = Date.parse('EEE MMM dd HH:mm:ss Z yyyy', today.toString())
assert parsed == today

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM