13

我在 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 中可以工作但在 Ubuntu 中如果我使用“Y”而不是“y”则无法工作的原因?

笔记:

  1. 播放-1.2.3
  2. 杰瑞:
    1. 视窗: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

2012 年 5 月 24 日更新

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

4

2 回答 2

21

我搜索 SimpleDateFormat 并从 oracle获取文档。

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

在此处输入图像描述

正因为如此,在 Windows 上工作,JRE1.7 添加了“Y”模式,Week year而在 JRE1.6 中没有这种模式。

于 2012-05-24T04:39:14.877 回答
14

Y不是有效的模式。y是。

根据文档

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是正确的。而且最安全。

于 2012-05-14T01:48:20.030 回答