この質問に関連する投稿が非常に多いことは知っていますが、どれも私の疑問を明確にすることができませんでした.
ユーザーからのDateTime値をグローバル定数(UTC)ミリ秒値で保存する必要があるため、別のタイムゾーンに変換するのに役立ちます。そのために、2つの異なるタイムゾーンでいくつかのテストを行いました。以下は私が試したことです:
タイムゾーンあり - PDT (GMT - 7)
DateTime dateTime = new DateTime(2013, 07, 04, 1, 19, 22);
String format = "yyyy-MM-dd HH:mm:ss Z";
int offsetMinutes = (dateTime.getZone().getOffset(dateTime)/1000)/60;
log.info(" Current Timezone => "+dateTime.getZone()+", OffSet => "+offsetMinutes);
log.info(" dateTime => "+dateTime.toString(format)+" => "+dateTime.getMillis());
UTC で同じ DateTime を使用
DateTime utcDateTime = dateTime.withZone(DateTimeZone.UTC);
offsetMinutes = (utcDateTime.getZone().getOffset(utcDateTime)/1000)/60;
log.info(" Current Timezone => "+utcDateTime.getZone()+", OffSet "+offsetMinutes);
log.info(" dateTime => "+utcDateTime.toString(format)+" => "+utcDateTime.getMillis());
以下は私が得た結果です:
太平洋夏時間 (GMT - 7)
Current Timezone => America/Los_Angeles, OffSet => -420 (-7)
dateTime => 2013-07-04 01:19:22 -0700 => 1372925962000
Current Timezone => UTC, OffSet 0
dateTime => 2013-07-04 08:19:22 +0000 => 1372925962000
GMT +5:30
Current Timezone => Asia/Kolkata, OffSet => 330 (+5:30)
dateTime => 2013-07-04 01:19:22 +0530 => 1372880962000
Current Timezone => UTC, OffSet 0
dateTime => 2013-07-03 19:49:22 +0000 => 1372880962000
問題は、
PDT タイムゾーンでは、ローカル ミリ秒と UTC ミリ秒が同じなのはなぜですか? (IST タイムゾーンと同じ)
2 つの異なる TimeZone の UTC 値が異なるのはなぜですか?
utc がグローバル定数であると想定されている場合、値は 2 つの異なるタイムゾーンで同じである必要があります。
誰かが私の疑問を明確にすることができますか、私は間違っていますか?
どんな提案や説明も本当に役に立ちます
ありがとうラメッシュ