Joda时间:设置星期几和星期几

时间:2013-04-23 01:56:03

标签: java jodatime

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

2 个答案:

答案 0 :(得分:2)

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

非常简单的是jodatime api。你可以使用joda api的那些方法获得许多最简单形式的结果:

然后你可以这样做:

返回当前日期的第三天:

  

Datetime dateTime = DateTime.now()。withDayOfWeek(3)

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

  

dateTime = dateTime.withMonthOfYear(4)

我不知道jodatime是否有获取 一周的 的方法,但您可以在jodatime api doc中更好地搜索 存在方法:

  

.withWeekOfWeekyear(int)
和.withWeekyear(int)

以单词 .with ... (例如:dateTime.withHourOfDay(2))开头的方法可以获得很多结果。看那儿,玩得开心......

阿布斯!

答案 1 :(得分:-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