Ubuntu上的非法模式字符'Y'

时间:2012-05-14 01:37:35

标签: java windows-7 ubuntu-10.04 simpledateformat playframework-1.x

我在Windows中使用此模式SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");并且它可以正常工作,但是当尝试使用Ubuntu 10.04时,它会显示异常play.exceptions.JavaExecutionException: Illegal pattern character 'Y'

我为此搜索解决方案,发现年份模式必须更改为小写: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");并且有效。

任何人都可以告诉我这种情况背后的原因在Windows中有效,但是如果我使用'Y'代替'y',Ubuntu就不起作用了吗?

注意:

  1. 播放-1.2.3
  2. JRE:
    1. Windows:java version "1.7.0_03" Java(TM) SE Runtime Environment (build 1.7.0_03-b05) Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing)
    2. Ubuntu:java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
  3. Windows 7
  4. Ubuntu 10.04
  5. 更新24/05/2012

    在我的系统中再次检查后,有3个JRE和我的窗口使用JRE1.7默认。但对于Play我使用JRE1.6设置运行。

2 个答案:

答案 0 :(得分:21)

我搜索SimpleDateFormat并从oracle获得doc

在我的窗口中工作,因为我将默认的JRE设置为1.7,但仍然使用JRE1.6为Play Framework运行。

enter image description here

因为这一点在Windows上工作,JRE1.7为Week year添加了'Y'模式,而在JRE1.6中没有添加模式。

答案 1 :(得分:14)

Y不是有效模式。 y是。

根据docs

Letter   Date or Time Component     Presentation    Examples
G        Era designator             Text            AD
y        Year                       Year            1996; 96
M        Month in year              Month           July; Jul; 07
w        Week in year               Number          27
...

我不知道为什么Y可以在Windows中运行,但是没有记录。 y是正确的。最安全的。