我知道有很多与这个问题相关的帖子,但没有一个能够澄清我的疑问。
我需要将用户的 DateTime 值保存在全局常量(UTC)毫秒值中,以便它有助于转换为不同的时区,因为我用两个不同的时区进行了一些测试,以下是我尝试过的:
使用时区 - 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
格林威治标准时间 +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 时区相同)
为什么两个不同时区的 UTC 值不同?
如果 utc 应该是全局常量,那么两个不同时区的值应该相同吗?
有人可以澄清我的疑问,我做错了吗?
请任何建议或澄清将非常有帮助
谢谢拉梅什