13

私はこのパターンをWindowsでSimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");と使用していますが、うまく動作しますが、Ubuntu 10.04で試してみると例外play.exceptions.JavaExecutionException: Illegal pattern character 'Y'が表示されます。Ubuntuで不正なパターン文字「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

更新24/05/2012

私は自分のシステムに再びチェックした後、デフォルトのためJRE1.7を使用して3 JREと私の窓があります。しかし、私はJRE1.6を使って走っていました。

+4

Ubuntuの実装はAPIのドキュメントに従っているので、ソースを掘り下げることなく、これはちょうど意見の答えかもしれませんが、他の誰かがもっと知っているかもしれません。 –

答えて

21

SimpleDateFormatを検索し、oracleからを取得しました。

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

enter image description here

このためのWindowsの上で動作し、JRE1.7はWeek yearのための「Y」のパターンを追加しましたし、JRE1.6で、このためのパターンがありません。

14

Yは有効なパターンではありません。 yです。 docs 1として

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が正しいです。そして、最も安全です。

+0

私は多分異なるJREを使用しているのでしょうか? Windowsの場合、OracleからJREを使用していますが、別の人が私のためにインストールしているので、私のUbuntuが同じJREを使用しているかどうかはわかりません。 – Crazenezz

+1

@Crazenezz - 実行 'java -version' –

+0

@StephenC:ありがとう、JREに関するいくつかの注意を追加 – Crazenezz

関連する問題