Javaでタイムスタンプを任意のタイムゾーンからGMTに変換するにはどうすればよいですか?

DDD
リリース: 2024-11-12 08:19:02
オリジナル
497 人が閲覧しました

How to Convert a Timestamp From Any TimeZone to GMT in Java?

Java を使用してカレンダーのタイムゾーンを処理する方法

質問:

からのタイムスタンプがありますアプリケーションは任意のタイムゾーンから発信される可能性があります。ただし、データは常に GMT であると想定される WebService に送信する必要があります。ユーザーが知らないうちに、ユーザーの入力時刻をローカルの TimeZone から GMT に変換する必要があります。

答え:

Java の TimeZone の処理は混乱を招く可能性があります。タイムスタンプは通常 GMT で保存されますが、Calendar クラスはデフォルトでシステムの現在のタイムゾーンを使用します。この課題に対処するには、次の点を考慮してください:

import java.util.Calendar;
import java.util.TimeZone;

public class ConvertTimeZone {

    public static void main(String[] args) {
        // Example input time (EST)
        Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST"));
        input.set(2008, Calendar.MAY, 1, 18, 12, 0);

        // Create a Calendar in GMT
        Calendar gmt = convertToGmt(input);

        // Output the converted time (GMT)
        System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT
    }

    public static Calendar convertToGmt(Calendar cal) {
        Date date = cal.getTime();
        TimeZone tz = cal.getTimeZone();

        long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT
        int offsetFromUTC = tz.getOffset(msFromEpochGmt);

        // Create a new Calendar in GMT and adjust for the offset
        Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        gmtCal.setTime(date);
        gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

        return gmtCal;
    }
}
ログイン後にコピー

このコードは次の手順を実行します:

  1. ユーザーのローカル TimeZone の現在時刻を Calendar オブジェクトとして取得します。
  2. GMT で新しい Calendar オブジェクトを作成します。
  3. ユーザーのローカル タイムゾーンと GMT の間のオフセットを計算します。
  4. ユーザーの時間にオフセットを追加して、GMT カレンダーを調整します。
  5. 結果として得られる Calendar オブジェクトは、ユーザーのタイムゾーンに関係なく、GMT で同じ時刻を表すようになりました。

このアプローチを利用すると、ユーザーの入力時間を任意のタイムゾーンから GMT に正確に変換できます。 WebService とのデータ互換性を確保します。

以上がJavaでタイムスタンプを任意のタイムゾーンからGMTに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート