ホームページ  >  記事  >  Java  >  JavaでESTタイムスタンプをGMTに変換するにはどうすればよいですか?

JavaでESTタイムスタンプをGMTに変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 16:36:02727ブラウズ

How to Convert EST Timestamps to GMT in Java?

Java タイムスタンプを使用してタイム ゾーンを変換する方法

このシナリオでは、EST タイム ゾーンのタイムスタンプがあるため、それを変換する必要がありますWeb サービス呼び出しの場合は GMT まで。詳細な説明は次のとおりです。

EST から GMT への変換

タイムスタンプ値は最初は GMT であると想定されているが、実際には GMT である可能性があるために問題が発生します。ローカルタイムゾーン (この場合は EST) が異なります。ユーザーのパラメータを EST から GMT に変換するには、2 つのタイムゾーン間の時差を考慮する必要があります。

Calendar クラスの使用

を使用していますタイムスタンプを操作するための Calendar クラス。ただし、Calendar クラスは、指定したタイム ゾーンに関係なく、常にエポック以降のミリ秒単位で動作することに注意してください。これは、Calendar.getInstance(GMT_TIMEZONE) を使用してタイムスタンプからカレンダーを作成する場合、基になる日付が GMT タイム ゾーンに一致するように調整されないことを意味します。

解決策: タイム ゾーン オフセットの調整

タイムスタンプを GMT に正確に変換するには、タイム ゾーン オフセットを考慮する必要があります。次のコード スニペットは、解決策を提供します。

public static Calendar convertToGmt(Calendar cal) {

    Date date = cal.getTime();
    TimeZone tz = cal.getTimeZone();

    // Compute milliseconds since epoch in GMT
    long msFromEpochGmt = date.getTime();

    // Get offset from UTC in milliseconds at the given time
    int offsetFromUTC = tz.getOffset(msFromEpochGmt);

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

    return gmtCal;
}

出力例

現在時刻 (EDT) を ConvertToGmt メソッドに渡すと、次の出力:

DEBUG - input calendar has date [Thu Oct 23 12:09:05 EDT 2008]
DEBUG - offset is -14400000
DEBUG - Created GMT cal with date [Thu Oct 23 08:09:05 EDT 2008]

これは、12:09:05 EDT が 08:09:05 GMT に正常に変換されたことを示しています。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。