1

Android2.3は昨夜リリースされました。だから当然、アプリを試してみたところ、日付の書式設定に問題があることがわかりました。DateFormatterがさまざまなフォーマットを生成することに気づきました。したがって、これを単純なJavaプログラムで実行します。

((SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.LONG, 
    DateFormat.LONG)).format(new Date());

出力は

2010年12月7日午前11:49:40EST

Androidエミュレーターで同じことを行うと、

2010年12月7日11:42:50AMGMT-05:00

異なるタイムゾーンに注意してください。誰かがこの問題に遭遇しましたか?Javaの実装に依存しない、使用できる別のフォーマッタはありますか?

編集: わかりました、これが壊れていると思う理由の詳細は次のとおりです:

このコードの使用:

private final DateFormat format = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");

日付を解析しようとしましたが、次のエラーがスローされます。

12-07 12:55:49.556: ERROR/DateDeserializer(847): Error when parsing date
    java.text.ParseException: Unparseable date: "Mon, 06 Dec 2010 17:13:35 EST"
    at java.text.DateFormat.parse(DateFormat.java:626)
    at com.currency.mobile.client.DateDeserializer
        .deserialize(DateDeserializer.java:31)
    at com.currency.mobile.client.DateDeserializer
        .deserialize(DateDeserializer.java:19)
    at org.codehaus.jackson.map.deser.SettableBeanProperty
        .deserialize(SettableBeanProperty.java:149)
4

3 に答える 3

1

どちらも同じTimeZoneであり、表現が異なるだけです

于 2010-12-07T16:54:16.440 に答える
1

出力に問題はありません。デフォルトのロケールに依存するDateFormat -Instanceを作成します。異なるマシン、異なるjavaインストールでは、デフォルトのロケールが異なるため、ロケールに依存する操作の出力が異なることは珍しいことではありません。この場合、デフォルトのTimeZoneは異なりますが、質問の2つの出力は同じ日付を表し、同じ形式の文字列で出力されます。MMMMM d, yyyy hh:mm:ss a z

更新: Android 2.3のparse()は、などのTimeZonesで動作しますが、たとえば、解析に有効なTimeZoneとしてGMT+xxxx認識されません。ESTAndroidはEST、を使用するかどうかを認識していますTimeZone.getTimeZone("EST")

UPDATE2:

3文字のタイムゾーンID「EST」、「HST」、および「MST」は非推奨になりました。それらを使用しないでください。

于 2010-12-07T17:38:05.647 に答える
1

パターン「EEEMMMddHH:mm:sszzzyyyy」のサポートも壊れているようです。

エヴゲニ

于 2011-01-01T00:18:43.763 に答える