Java / Apache Velocity date.format给出了错误的一年

时间:2014-10-13 19:12:54

标签: java date-format velocity

我在.vm文件中使用以下代码行。对于这个特定的日期,我希望将日期返回到12/31/14,而是返回12/31/15。有谁知道可能导致今年出现错误的原因是什么?

$date.format('MM/dd/YY', 'Wed Dec 31 07:23:45 CST 2014')

在我的tools.xml文件中,我添加了ComparisonDateTool,如下所示:

<tool class="org.apache.velocity.tools.generic.ComparisonDateTool"
          format="MM/dd/yyyy H:m:s" depth="1" skip="month,week"
          bundle="org.apache.velocity.tools.generic.times" timezone="CST"/>

1 个答案:

答案 0 :(得分:3)

将格式更改为“MM / dd / yy”(请注意小写字母y)

YY(大写Y)是Week Year

  

日历年的第一周是从getFirstDayOfWeek()开始的最早的七天时段,其中至少包含该年的getMinimalDaysInFirstWeek()天。因此,它取决于getMinimalDaysInFirstWeek(),getFirstDayOfWeek()和1月1日的星期几的值。一年的第1周和下一年的第1周之间的周(不包括)从2到52顺序编号或者53(Julian-Gregorian过渡所涉及的年份除外)。

...

  

第一周和最后一周(包括)之间的所有周都具有相同的周年值。因此,一周的第一天和最后一天可能具有不同的日历年值。   ...   例如,1998年1月1日是星期四。如果getFirstDayOfWeek()是MONDAY并且getMinimalDaysInFirstWeek()是4(ISO 8601标准兼容设置),那么1998年第1周将于1997年12月29日开始,并于1998年1月4日结束。过去三天的一周是1998年但是,如果getFirstDayOfWeek()是SUNDAY,则1998年第1周从1998年1月4日开始,到1998年1月10日结束; 1998年的前三天是1997年第53周的一部分,其一周是1997年。