2

我正在使用 Joda 时间,但在设置星期几和月份的星期几时遇到问题。假设如果我选择April 23,2013哪个是(本月第 4 周的第 3 天),我想要下一个日期3rd day of 4th week of the month是 5 月 21 日。有没有办法做到这一点?

4

2 回答 2

3

我不推荐使用日历 api,因为它非常复杂......并不简单......正如 Ilya 所说。

最简单的是jodatime api。您可以使用 joda api 的许多方法来获得许多最简单形式的结果:

然后你可以这样做:

返回当前日期的第三天:

日期时间 dateTime = DateTime.now().withDayOfWeek(3)

设置特定月份,在本例中为四月:

dateTime = dateTime.withMonthOfYear(4)

我不知道jodatime是否有get week of the month的方法,但是你可以在jodatime api doc中更好地搜索 存在方法:

.withWeekOfWeekyear(int)

.withWeekyear(int)

在以 word 开头的方法中:.with...(例如:dateTime.withHourOfDay(2))您可以获得很多结果。看看那里,玩得开心...

腹肌!

于 2014-09-26T14:51:24.907 回答
-2

最简单的方法是下一个:使用类java.util.Calendar

   static DateTime nextMonth(final DateTime current)
   {
      final Calendar curr = current.toCalendar(Locale.getDefault());
      final Calendar retVal = Calendar.getInstance();
      retVal.set(Calendar.DAY_OF_WEEK, curr.get(Calendar.DAY_OF_WEEK));
      retVal.set(Calendar.WEEK_OF_MONTH, curr.get(Calendar.WEEK_OF_MONTH));
      retVal.set(Calendar.MONTH, curr.get(Calendar.MONTH) + 1);
      return new DateTime(retVal).withMillisOfDay(0);
   }   

用法

DateTime dateTime = new DateTime(2013, 04, 23, 0 ,0 ,0 ,0); //April 23,2013
DateTime nextMonth = nextMonth(dateTime); // May 21, 2013
于 2013-04-24T08:22:41.720 回答