0

タイムゾーンの解析でいくつかの矛盾をデバッグしようとしていSimpleDateFormatます。これは日付形式です。解析に使用しています:

static private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd, h:mmaa zzz", Locale.US);

解析する日付文字列:

2013 年 3 月 20 日午後 3 時 36 分(東部夏時間)

2.3.5 の Samsung で解析が失敗し、4.0.4 の HTC および 2.3.3 の HTC で動作します。

以下は、いくつかの解析テストの出力です。

HTC 4.0.4 :

Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 CET 2013 : lenient : true
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 CET 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 CET 2013 : lenient : false
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 CET 2013 : lenient : false

HTC 2.3.3 :

Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : false
Test : 2013-03-20, 3:36PM EDT : Wed Mar 20 20:36:00 GMT+01:00 2013 : lenient : false

サムスン 2.3.5 :

Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : true
Test : 2013-03-20, 3:36PM EST : Wed Mar 20 21:36:00 GMT+01:00 2013 : lenient : false

残りの解析は Samsung で失敗します。

誰でもこの動作を説明できますか?

4

3 に答える 3

1

androidについてはわかりませんが、javaでは次の方法でシステムプロパティを取得できます。java.lang.System.getProperties()

于 2013-03-21T16:43:48.020 に答える
1

現在、Androidで利用できるJDKはありません。

そして、SimpleDateFormatのリファレンスを見ると、そのバージョンは1つだけです。したがって、Android OSレベルで機能するものはすべて、すべてのレベルで機能するはずです。SimpleDateFormatの不整合は、デバイスごとにロケールが異なることが原因である可能性があります。デバイスのデフォルトのロケールを使用する代わりに、1つのロケールを使用するように修正します。

new SimpleDateFormat(dataFormat,Locale.US);
于 2013-03-21T16:56:30.663 に答える
0

Samsung Galaxy 7 タブレットでも同様の問題が発生しています。

「EDT」は TimeZone.getAvailableIDs() によって返されるリストにないため、「z」を使用する SimpleDateFormat は機能しません。

TZ 略語のハッシュ テーブルを作成し、コードを += オフセットに変換します。

信じられない、本当に...

于 2013-06-25T17:30:20.570 に答える