每當我嘗試在 java 中洗掉 Instant 資料型別的小數點時,都會收到此錯誤。
! java.util.IllegalFormatConversionException: M != java.time.Instant
這是我嘗試用于轉換的代碼行。我正在使用 String.format
subCategory.setSla(Instant.parse(String.format("%tM", Instant.ofEpochSecond(dto.getSla().atZone(ZoneOffset.UTC).getMinute()))));
沒有字串格式,我得到類似24.00000
我不想看到24后的小數點,你覺得怎么處理最好?
我的 dto 有類似的東西
private Instant sla;
我的 dto 正在回傳一個Instant,我非常確定。我想只顯示一分鐘并通過電子郵件將這一分鐘發送給用戶。我不想要帶小數點的默認表示。
uj5u.com熱心網友回復:
tl;博士
instant // Represents a moment as seen in UTC, an offset of zero hours-minutes-seconds.
.atOffset( ZoneOffset.UTC ) // Returns an `OffsetDateTime` object, converting from `Instant`.
.getMinute() // Returns an `int` primitive value.
細節
您正在將日期時間物件與文本混為一談。諸如Instant不是文本的類。這些類使用它們自己內部定義的日期時間值表示。該表示不是純文本。
顯然,您只想從Instant物件中提取一小時中的一分鐘。該類是java.time中的基本構建塊類。所以轉換為更靈活的OffsetDateTime類。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
提取小時的分鐘。
int minute = odt.getMinute() ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/483913.html
標籤:爪哇 约会时间 日期时间格式 java时间 java.time.instant
上一篇:查找具有值和最新日期的行數
