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; } }
このコードは次の手順を実行します:
このアプローチを利用すると、ユーザーの入力時間を任意のタイムゾーンから GMT に正確に変換できます。 WebService とのデータ互換性を確保します。
以上がJavaでタイムスタンプを任意のタイムゾーンからGMTに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。