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");そしてそれは機能します。

「y」の代わりに「Y」を使用すると、Windowsでは機能するのにUbuntuでは機能しなかった理由を誰でも教えてもらえますか?

ノート:

  1. Play-1.2.3
  2. JRE:
    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. ウィンドウズ7
  4. Ubuntu 10.04

2012 年 5 月 24 日更新

システムを再度確認したところ、3 つの JRE とデフォルトで JRE1.7 を使用しているウィンドウがあります。しかし、Play では JRE1.6 を使用して実行するように設定しました。

4

2 に答える 2

21

SimpleDateFormat を検索し、オラクルからドキュメントを取得しました。

デフォルトの JRE を 1.7 に設定しましたが、Play Framework 用に JRE1.6 を使用して実行しているため、私のウィンドウで動作します。

ここに画像の説明を入力

このため、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 に答える