亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從日歷周信息創建 LocalDate

從日歷周信息創建 LocalDate

藍山帝景 2022-06-30 17:44:30
鑒于:一年:2019日歷周數:1(== 一年中的第一周)A DayOfWeek: 星期日需要:將這些信息 f 轉換為 LocalDate 對象,以便assertEquals(LocalDate.of(2019,1,6), f(2019,1,SUNDAY))我試過的我沒有找到使用 java.time.* 從“2019 年第一個日歷周的星期日”之類的信息創建日期的方法。我發現舊的 java.util.Calendar 類有一個可能有用的 setWeekDate() 函數。但是以下代碼導致了異常: ...    Calendar c = Calendar.getInstance();    c.setWeekDate(2019, 1, Calendar.MONDAY);    c.setTimeZone(TimeZone.getDefault());    return LocalDate.from(c.toInstant());java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2018-01-08T20:03:55.602Z of type java.time.Instantat java.time.LocalDate.from(LocalDate.java:379)at ...
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

檢查 ChronoField 或 IsoFields 以獲得合適的方式來獲取您想要使用的日歷系統的星期。LocalDate用作“基礎”值的對象應具有預期年份的周值。


int year = 2019;

int weekNumber = 1;

LocalDate localDate = LocalDate.of(year, 2, 1)

        .with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, weekNumber)

        .with(ChronoField.DAY_OF_WEEK, DayOfWeek.SUNDAY.getValue());

選擇第一個日期是有意義的。使用LocalDate.of(year, 1, 1)將給出可以屬于上一年最后一周的一天,同樣適用,LocalDate.now()但僅限于給定的時間段。


LocalDate.of(2017, 1, 1)

    .with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 26)

    .with(ChronoField.DAY_OF_WEEK, DayOfWeek.SUNDAY.getValue());

// 2016-07-03


LocalDate.of(2017, 1, 1).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);

// 52

因此,從第 52 周跳到第 26 周將給出日期 2016-07-03,因為日期是通過第 52 周和第 26 周之間的子跟蹤時間計算的。


查看完整回答
反對 回復 2022-06-30
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號