在“Joda-Time”中,将“日期时间”设置为月初

2022-09-01 07:10:08

我的 API 允许库客户端传递日期:

method(java.util.Date date)

Joda-Time合作,从这一天起,我想提取月份并迭代本月包含的所有日子。

现在,通过的日期通常是新的Date() - 表示当前时刻。我的问题实际上是将新的DateMidnight(jdkDate)实例设置为月初。

有人可以用Joda-Time演示这个用例吗?


答案 1

当前月份第一天开始时的午夜由下式给出:

// first midnight in this month
DateMidnight first = new DateMidnight().withDayOfMonth(1);

// last midnight in this month
DateMidnight last = first.plusMonths(1).minusDays(1);

如果从 java.util.Date 开始,则使用不同的 DateMidnight 构造函数:

// first midnight in java.util.Date's month
DateMidnight first = new DateMidnight( date ).withDayOfMonth(1);

Joda Time java doc - https://www.joda.org/joda-time/apidocs/overview-summary.html


答案 2

另一种方法(不考虑DateMidnight)获取当月的第一天是使用:

  DateTime firstDayOfMonth = new DateTime().dayOfMonth().withMinimumValue();