5

私の Android アプリケーション サーバーではUTC、次の format( yyyy-MM-dd HH:mm:ss) 24hours で日付が返され、それらの時間をユーザーの TimeZone に変換する必要がありCSTますIST

次のコードを実行しましたが、それが正しいかどうかはわかりません。正しい方法でタイムゾーンを変換するのを手伝ってください。

UTC日付をjson文字列として取得し、ユーザーのタイムゾーン形式に変換してAndroid側を表示します

private static Date utcDate;
private static DateFormat expireFormat = new SimpleDateFormat(
        "yyyy-MM-dd HH:mm:ss");

        try {
            expireFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
            utcDate = expireFormat.parse("2014-04-01 10:32:00");
            System.out.println(TimeZone.getDefault().getID());
            expireFormat.setTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID()));
            System.out.println(expireFormat.format(utcDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }

    output of the code:
    Asia/Calcutta
    2014-04-01 16:02:00
4

1 に答える 1

4

再フォーマットされた String が本当に取得しようとしているものである場合、全体的なアプローチは問題ありません。

いくつか問題点はありますが

  1. SimpleDateFormatスレッドセーフなクラスではありません。サーバー内の静的フィールドに設定するのは問題です!

  2. 静的フィールドを使用して中間の Date オブジェクトを保持することに関しては、#1 と同じです。

  3. 「CST」は中国標準時ですか? 中部標準時 (米国またはオーストラリア)? キューバ標準時? 3 文字の省略形 TimeZone は、一般的に悪いニュースです。可能であれば、Olson Name または Alias を使用するようにしてください。

  4. これはサーバー側ですか、それともアンドロイドですか?サーバーの場合は、おそらく DateTime 処理用の新しい Java 8 API の恩恵を受けることができます。

于 2014-03-31T18:19:44.693 に答える