我按照下面的代码在指定的 dateTime 上使用指定的时区创建一个 Date 对象。
注意:我没有为 jvm 设置任何时区;但是用不同的 linux 服务器时区测试这段代码。
String date = "20121225 10:00:00";
String timeZoneId = "Asia/Calcutta";
TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);
DateFormat dateFormatLocal = new SimpleDateFormat("yyyyMMdd HH:mm:ss z");
//This date object is given time and given timezone
java.util.Date parsedDate = dateFormatLocal.parse(date + " "
+ timeZone.getDisplayName(false, TimeZone.SHORT));
if (timeZone.inDaylightTime(parsedDate)) {
// We need to re-parse because we don't know if the date
// is DST until it is parsed...
parsedDate = dateFormatLocal.parse(date + " "
+ timeZone.getDisplayName(true, TimeZone.SHORT));
}
现在 parsedDate 对象的行为不同
当我的 jvm 服务器在 IST 中运行时
parsedDate.getTime() -- 1356409800000
parsedDate.toString() -- Tue Dec 25 10:00:00 IST 2012
in GMT --- 12/25/2012 04: 30:00 GMT
当我的 jvm 服务器在 EST 运行时
parsedDate.getTime() -- 1356422400000
parsedDate.toString() -- Tue Dec 25 03:00:00 EST 2012
in GMT --- 12/25/2012 08:00 :00 格林威治标准时间
我的两个系统时间是同步的
Mon Dec 24 10:30:04 EST 2012
Mon Dec 24 21:00:48 IST 2012
我期望在两台机器上我应该得到相同的 GMT 时间。
这里出了什么问题?