java格式化时间字符串 毫秒_SimpleDateFormat是否有格式字符串来获取毫秒日期时间值,而不是人类可读的格式?...
舊的和過時的
SimpleDateFormat
類不能這樣做。它的替代品,現代的
DateTimeFormatter
,可以。
DateTimeFormatter epochMilliFormatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.INSTANT_SECONDS)
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
Instant sampleInstant = OffsetDateTime
.of(2020, 1, 11, 10, 21, 40, 0, ZoneOffset.UTC)
.toInstant();
String formattedValue = epochMilliFormatter.format(sampleInstant);
System.out.println(formattedValue);
此代碼段的輸出是您提到的數字:
1578738100萬
使用
ChronoField.INSTANT_SECONDS
在格式化程序中
秒
從那個時代開始。我們想要
毫秒
,所以我們需要附加
ChronoField.MILLI_OF_SECOND
立即并確保它們準確打印在3個位置,零填充。這就是
3
作為第二個論點
appendValue()
做。
有沒有可能
格式字符串
產生一個字符串
毫秒?
不,使用格式模式字符串是不可能的,使用
日期格式
也沒有
日期時間格式
. 你可以檢查每一個可能的模式字母,并看到沒有模式字母,無論是秒還是毫秒,從紀元。
不過,你確定你想要嗎?
即使這是為了存儲或用于系統之間的數據交換,通常也不建議在epoch之后使用milliseoncds,因為它們不是人類可讀的,因此在調試和特殊查詢中很麻煩。在大多數情況下,最好使用ISO 8601格式的字符串,比如
2020-01-11T10:21:40Z
. 詳見巴茲爾·布爾克的另一個答案。國際標準化組織8601格式被設計成可供人類和計算機閱讀的格式。
無論如何,您不應該使用SimpleDateFormat
這個
日期格式
類是出了名的麻煩(盡管解析比格式化更麻煩)。它也早已過時。這個
Date
你提到的類設計得很差,而且很早就過時了。我建議您使用java.time,即現代的java日期和時間API,正如我上面所做的那樣。
鏈接
總結
以上是生活随笔為你收集整理的java格式化时间字符串 毫秒_SimpleDateFormat是否有格式字符串来获取毫秒日期时间值,而不是人类可读的格式?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NetSpot Pro for Mac(
- 下一篇: 【转】获取用户移动方向,指南针原理