当前位置: 首页 > 面试题库 >

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

安博文
2023-03-14
问题内容

我想根据LocalDate.now()获取一周中第一天的日期。JodaTime可以进行以下操作,但似乎已从Java 8的新Date API中删除。

LocalDate now = LocalDate.now();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY));

我无法调用“ withDayOfWeek()”,因为它不存在。

所以我的问题是: 如何根据某些LocalDate获取星期几的日期?


问题答案:

请注意,该表达式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)忽略了此本地化问题。



 类似资料:
  • 问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时

  • 本文向大家介绍asp中获取日期为星期几的方法,包括了asp中获取日期为星期几的方法的使用技巧和注意事项,需要的朋友参考一下 测试代码如下,请使用IE运行本示例 WEEKDAY 用途:返回某日期的星期数。在默认情况下,它的值为1(星期天)到7(星期六)之间的一个整数。 Weekday是Visual Basic和VBS中的一个函数,功能返回代表一星期中某天的整数。 语法 参数 Weekday 函数的语

  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。

  • 本文向大家介绍python根据日期返回星期几的方法,包括了python根据日期返回星期几的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python根据日期返回星期几的方法。分享给大家供大家参考。具体如下: 这个函数给定日期,输出星期几,至于0是星期一还是星期天,这和时区有关,反正我这里是0表示星期一 如果要输出当天是星期几,执行下面的代码 输出结果为: 星期一 希望本文所述对大家的

  • 问题内容: 我有一个类似于以下的DataFrame (摘录,“ Timestamp”是索引): 我需要一个新列,分别包含时间戳记的星期几/星期几。 我怎么能得到这个? 问题答案: 使用新属性: 在索引是的情况下,您需要重置索引,然后调用该属性: 奇怪的是,如果您尝试从索引创建一个序列以不重置索引,您将像使用的结果调用属性那样获得值,而没有将结果赋回原始df: 编辑 正如用户@joris向我指出的那

  • 本文向大家介绍JavaScript获取当前日期是星期几的方法,包括了JavaScript获取当前日期是星期几的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript获取当前日期是星期几的方法。分享给大家供大家参考。具体如下: JavaScript获得当前日期是星期几,主要通过getDay函数获得当前日期是一个星期的第几天 希望本文所述对大家的javascript程序设计有