我有一個字串表示持續時間,54:34:41即 54 小時、34 分鐘、41 秒。
我想提取54小時數并將其從當前系統時間中減去。
但是,當我在下面運行時,我得到java.time.format.DateTimeParseException: Text '54:34:41' could not be parsed: Invalid value for HourOfDay (valid values 0 - 23): 54
如何提取 54 小時并從當前時間中減去?
private val formatterForTime: DateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss")
val timeDuration = formatterForTime.parse("54:34:41")
val currentTime = LocalDateTime.now()
val newTime = currentTime.minusHours(timeDuration.get(ChronoField.HOUR_OF_DAY).toLong())
uj5u.com熱心網友回復:
tl;博士
ZonedDateTime
.now(
ZoneId.of( "Asia/Tokyo" )
)
.minusHours(
Integer.parseInt( "54:34:41".split( ":" )[0] )
)
細節
決議時間
獲取小時數。
int hours = Integer.parseInt( "54:34:41".split( ":" )[0] ) ;
ISO 8601
您的時間跨度輸入文本不符合日期時間值的ISO 8601標準。java.time類在決議/生成文本時默認使用標準格式。
如果不是54:34:41你有PT54H34M41S,那么我們可以使用:
int hours = Duration.parse( "PT54H34M41S" ).toHours() ;
我建議您堅持使用標準格式而不是模棱兩可的時鐘時間格式。
捕捉當前時刻
捕捉在特定時區看到的當前時刻。
ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
減去小時數
減去你的時間。
ZonedDateTime earlier = zdt.minusHours( hours ) )
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487172.html
