6

有没有办法让一年中的所有星期加上每周的开始和结束日期?(与乔达时间

像这样(2012):

周:21 开始:21.05.2012 结束:27.05.12

谢谢你的帮助

4

3 回答 3

6

试试这个:

SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); 
Period weekPeriod = new Period().withWeeks(1);
DateTime startDate = new DateTime(2012, 1, 1, 0, 0, 0, 0 );
DateTime endDate = new DateTime(2013, 1, 1, 0, 0, 0, 0 );
Interval i = new Interval(startDate, weekPeriod );
while(i.getEnd().isBefore( endDate)) {
    System.out.println( "week : " + i.getStart().getWeekOfWeekyear()
            + " start: " + df.format( i.getStart().toDate() )
            + " ending: " + df.format( i.getEnd().minusMillis(1).toDate()));
    i = new Interval(i.getStart().plus(weekPeriod), weekPeriod);
}  

请注意,周数从 52 开始,然后从 1 到 51,因为 1 月 1 日不是星期日。

相反,如果您想查看每个周一至周日的日期:

SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); 
Period weekPeriod = new Period().withWeeks(1);
DateTime startDate = new DateTime(2012, 1, 1, 0, 0, 0, 0 );
while(startDate.getDayOfWeek() != DateTimeConstants.MONDAY) {
    startDate = startDate.plusDays(1);
}

DateTime endDate = new DateTime(2013, 1, 1, 0, 0, 0, 0);
Interval i = new Interval(startDate, weekPeriod);
while(i.getStart().isBefore(endDate)) {
    System.out.println("week : " + i.getStart().getWeekOfWeekyear()
            + " start: " + df.format(i.getStart().toDate())
            + " ending: " + df.format(i.getEnd().minusMillis(1).toDate()));
    i = new Interval(i.getStart().plus(weekPeriod), weekPeriod);
}
于 2012-05-23T13:51:00.770 回答
3
于 2017-07-10T04:03:46.323 回答
1

从未使用过乔达时间。我会做这样的事情:

  1. 创建一个具有周数和两个日期时间(开始、结束)的类
  2. 创建此类的列表
  3. 迭代一年(每周一周)并将当前周保存在列表中

这就是我使用标准 java 日历 api 执行此操作的方式。可能 Joda Time 更容易一些,我不知道。

于 2012-05-23T13:41:19.630 回答