java用date获取星期几_根据Java 8中的LocalDate.now()获取星期几的日期

小编典典

请注意,该表达式System.out.println(now.with(DayOfWeek.MONDAY))使用ISO-8601,因此它与语言环境无关,因此它总是向后跳到上一个星期一(或保留在星期一,以防日期已经指向星期一)。

因此,在美国或其他一些国家/地区(星期从星期日开始)-可能无法按您预期的那样工作-

如果日期指向星期日,now.with(DayOfWeek.MONDAY) 则不会跳到 星期一。

如果您需要解决这些问题,最好使用本地化字段WeekFields.dayOfWeek():

LocalDate now = LocalDate.now();

TemporalField fieldISO = WeekFields.of(Locale.FRANCE).dayOfWeek();

System.out.println(now.with(fieldISO, 1)); // 2015-02-09 (Monday)

TemporalField fieldUS = WeekFields.of(Locale.US).dayOfWeek();

System.out.println(now.with(fieldUS, 1)); // 2015-02-08 (Sunday)

由于下面的评论而产生的另一个示例:

LocalDate ld = LocalDate.of(2017, 8, 18); // Friday as original date

System.out.println(

ld.with(DayOfWeek.SUNDAY)); // 2017-08-20 (2 days later according to ISO)

// Now let's again set the date to Sunday, but this time in a localized way...

// the method dayOfWeek() uses localized numbering (Sunday = 1 in US and = 7 in France)

System.out.println(ld.with(WeekFields.of(Locale.US).dayOfWeek(), 1L)); // 2017-08-13

System.out.println(ld.with(WeekFields.of(Locale.FRANCE).dayOfWeek(), 7L)); // 2017-08-20

以美国为例,这很清楚地表明,居住在美国的人会期望去到下一个而不是下一个星期日,因为星期日被认为是美国一周中的第一天。基于ISO的简单表达式with(DayOfWeek.SUNDAY)忽略了此本地化问题。

2020-09-18

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值