LocalDate beginDate = LocalDate.now()
.with(ChronoField.DAY_OF_WEEK, 1)
.atStartOfDay()
.minusDays(8)
.toLocalDate();
我正在使用上面的代碼行獲取前一周的開始日期。但是我想為此添加 HH:MM:SS 格式。我嘗試了不同的方法來獲得這個。嘗試使用 LocalDateTime 而不是 Localdate。但找不到atStartOfDay()LocalDateTime 的方法。幫我將 HH:MM:SS 添加到beginDate變數中
uj5u.com熱心網友回復:
tl;博士
LocalDate // Represents a date only, without a time of day, without a time zone or offset.
.now( ZoneId.of( "Asia/Amman" ) ) // Returns a `LocalDate`.
.minusDays( 8 ) // Returns another `LocalDate` object.
.atStartOfDay( ZoneId.of( "Asia/Amman" ) ) // Returns a `ZonedDateTime`.
.toString() // Returns a `String` object, with text in standard ISO 8601 format wisely extended to append the name of time zone in brackets.
請參閱在 Ideone.com 上運行的此代碼。請注意,在該區域的那個日期,這一天開始于 01:00,而不是00:00。
2022-02-22T01:00 03:00[亞洲/安曼]
不涉及“格式”
日期時間物件沒有“格式”。文本有格式。日期時間物件不是文本。
LocalDate沒有時間
你說:
將 HH:MM:SS 格式添加到 [a
LocalDateobject]
ALocalDate僅表示日期,沒有時間,沒有時區或偏移量。
ZonedDateTime
顯然,您想要在您所在地區看到的八天前一天的第一刻。
首先,指定您想要/預期的時區。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
或者使用 JVM 當前的默認時區。
ZoneId z = ZoneId.systemDefault() ;
捕獲在該區域中看到的當前日期。
LocalDate today = LocalDate.now( z ) ;
回去八天。
LocalDate eightDaysAgo = today.minusDays( 8 ) ;
如果您打算回傳前一個星期一,請使用TemporalAdjuster.
LocalDate previousMonday = today.with( TemporalAdjusters.previous( DayOfWeek.MONDAY ) ) ;
獲得那天的第一刻。通過您的時區。
ZonedDateTime zdt = eightDaysAgo.atStartOfDay( z ) ;
一天中的時間可能是 00:00:00,但不一定。某些區域的某些日期的某些日子從另一個時間開始,例如 01:00:00。
所有這些都已經在 Stack Overflow 上多次介紹過。搜索以了解更多資訊。
uj5u.com熱心網友回復:
你想要的是一個 LocalDateTime,它是一個帶有時間組件(包括時區)的 LocalDate。
LocalDate 就像它在錫上所說的那樣,它給你一個日期,而不是日期和時間。
uj5u.com熱心網友回復:
LocalDateTime
.of(LocalDate.now().with(ChronoField.DAY_OF_WEEK, 1), LocalTime.MIDNIGHT)
.minusWeeks(1)
為您提供上周午夜(當地時間)的開始時間。
uj5u.com熱心網友回復:
@DateTimeFormat("HH:MM:SS")
@JsonFormat("HH:MM:SS")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531763.html
下一篇:使用R修改檔案名中時間戳的時區
