簡體   English   中英

如何添加Java長后綴l

[英]How to add Java long suffix l

我實際上在努力如何將“ L”后綴添加到長值中。

JSON服務為我提供了以秒為單位的時間戳。 在我的輸出中,我想以一種易讀的格式花費一秒鍾的時間。 因此,我想使用SimpleDateFormat,它需要以毫秒為單位的時間戳。

因此,我得到了以秒為單位的值1545151800。 要將我帶入毫秒數,它將是(* 1000)1545151800000

因為很長,所以它的值應為1545151800000L。

如何完成將“ L”添加到我的值? 無法將一些字符添加到long中。 如果我不在乎“ L”后綴,則會得到不同的(錯誤的)結果。

終於我有了解決方案。 問題不是TJ Crowder指出的后綴問題。 這與我的JAXB和json服務有關。

修復之前

將這兩行放入我的toString()方法之后,一切工作正常。 當timeOfData仍為0時,已經使用了timeOfDataL。因此0導致01/01/1970

修復后

java.time

    String humanDateOfData = Instant.ofEpochSecond(timeOfData)
            .atZone(ZoneId.systemDefault())
            .format(dateFormatter);

您可以在類中只聲明一次日期格式化程序,而不是為每次toString調用創建一個新的日期格式化程序:

static DateTimeFormatter dateFormatter
        = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.US);

在我在歐洲/哥本哈根時區電腦這給了humanDateOfData18/12/2018 ,你現在可以在返回值從使用toString

在這種情況下,的代碼比您擁有的代碼長,但是我仍然熱烈推薦它。 您使用的日期和時間類DateSimpleDateFormat設計得很差,而后者卻很麻煩。 他們也早已過時。 相反,我使用的是java.time,這是2014年推出的現代Java日期和時間API。而且,乘以1000似乎很簡單,但是自己進行時間轉換通常很復雜且容易出錯,因此這是一個壞習慣進入。 Instant從該紀元以來直接接受秒,因此不再需要它。 最后,現代代碼清楚地表明,我喜歡使用時區來確定日期。 如果您知道時區,則還可以指定哪個時區,例如ZoneId.of("Asia/Harbin")

休息 時間 Oracle Tutotial:日期時間

暫無
暫無

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

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