在jodatime中计算一个月的周数

Lod*_*ger 7 java jodatime

有可能在jodatime中计算一个月的周数吗?

我需要这样的东西:

月:七月

  • 27周; 1-7.七月
  • 28周; 9-14.七月
  • 29年周; 16-21.七月
  • 30周的一周; 23-31.七月

月:八月

  • 31年的一周; 1-4.八月
  • 32年周; 6-11.八月
  • 33年周; 13-18.八月
  • 34年周; 20-25.八月
  • 35年周; 27-31.八月

我知道我可以像这样在joda时间获得一周的一周:

new LocalDate().weekOfWeekYear()

但我不知道如何获得相关日期.

Joe*_*ckx 9

要检索一周的范围,只需创建一个指向一周的第一天和最后一天的对象,然后从中拉出月中的某一天.

int weekOfYear = 32;

LocalDate firstDay = new LocalDate().withWeekOfWeekyear(weekOfYear).withDayOfWeek(1);
LocalDate lastDay = new LocalDate().withWeekOfWeekyear(weekOfYear).withDayOfWeek(7);

System.out.println("Week of Year "+weekOfYear+"; "+firstDay.toString("d MMM")+" - "+lastDay.toString("d MMM"));
Run Code Online (Sandbox Code Playgroud)

您也可以像这样提取日期:

int weekStart = firstDay.getDayOfMonth();
int weekEnd = lastDay.getDayOfMonth();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用相同的技术检索一个月内的周数.

int firstWeekInMonth = new LocalDate().withMonthOfYear(month).withDayOfMonth(1).getWeekOfYear();
int lastWeekInMonth = new LocalDate().withMonthOfYear(month).dayOfMonth().withMaximalValue().getWeekOfYear();
Run Code Online (Sandbox Code Playgroud)

可能你可能希望限制开始日期和结束日期保持在月份的范围内,否则你可能会得到像'30 - 9 Sep'这样的东西.