【问题标题】:Get last day of the month from a ZonedDateTime object从 ZonedDateTime 对象获取该月的最后一天
【发布时间】:2020-10-13 23:12:45
【问题描述】:

我以前可以使用 Joda DateTime 对象执行此操作,但我不确定如何为应用了时区的 ZonedDateTime 实例获取给定月份的最后一天。

例如

  • 闰年二月回归 29
  • 4 月返回 30。
  • 12 月返回 31。

对于 Jodatime,我使用了 dayOfMonth()getMaximumValue(),但是如何在 Java 11 中使用 ZonedDateTime 进行等效操作?

【问题讨论】:

    标签: java java-time zoneddatetime dayofmonth


    【解决方案1】:

    您实际上并不需要 ZonedDateTime 对象 - LocalDate 可能就足够了(除非您正在处理异国情调的日历)。

    val zdt = ZonedDateTime.now() //let's start with a ZonedDateTime if that's what you have
    val date = zdt.toLocalDate() //but a LocalDate is enough
    val endOfMonth = date.with(TemporalAdjusters.lastDayOfMonth())
    

    请注意,如果您想保留时间和时区信息,也可以拨打zdt.with(TemporalAdjusters.lastDayOfMonth())

    【讨论】:

    • OP:如果您有兴趣了解有关 Java 的现代日期时间 API 的更多信息,请查看Trail: Date Time
    • 谢谢,我不熟悉 TemporalAdjusters,但这很好用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2022-01-21
    • 2014-03-22
    • 2014-08-06
    相关资源
    最近更新 更多