根据ISO 8601生成周/年的列表

时间:2014-02-20 16:19:13

标签: date datetime groovy week-number

我尝试相应地生成week number(由ISO 8601定义)的天数列表:

mydate='2012-12-25 02:26:55.983'
for (i=1;i<365;i++)
{
  mydateAsDate=new Date().parse('yyyy-MM-dd H:mm:ss.S',mydate)+i;
  println 'Week ' + mydateAsDate.format('w') + ' => ' + mydateAsDate.format('dd.MM.yyyy');
}

这有效,但我想让这一年也像这样:

Week 1-2013

我无法弄清楚应该采用哪一年的信息。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

正如Jon Skeet所说,我建议使用Joda-Time

如果您这样做,以下内容应解决您的问题:

mydate= new DateTime(2012,12,25)
yearLater = myDate.plusYears(1)
while(myDate < yearLater){
  println "Week ${myDate.weekOfWeekyear} - ${myDate.year}"
  myDate = myDate.plusDays(1)
}

答案 1 :(得分:0)

不确定我理解,但你的意思是:

String startDateString = '2012-12-25 02:26:55.983'
Date startDate = Date.parse( 'yyyy-MM-dd H:mm:ss.S', startDateString )
(1..364).each { i ->
    println( (startDate++).format( "dd.MM.yyyy : 'Week' w'-'yyyy" ) )
}

答案 2 :(得分:0)

我明白了:SimpleDateFormat在使用YYYY格式时提供正确的周年信息

因此这仅适用于java 1.7

感谢您的回复!

欢呼声