我正在按照以下代码来创建一个在指定日期时间和指定时区的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));
}
现在解析后的日期对象表现不同了
当我的jvm服务器运行在IST时
parsedDate.getTime() -- 1356409800000
parsedDate.toString() -- Tue Dec 25 10:00:00 IST 2012
在GMT中 --- 12/25/2012 04:30:00 GMT
当我的jvm服务器运行在EST时
parsedDate.getTime() -- 1356422400000
parsedDate.toString() -- Tue Dec 25 03:00:00 EST 2012
在GMT中 --- 12/25/2012 08:00:00 GMT
我的两个系统时间是同步的
Mon Dec 24 10:30:04 EST 2012
Mon Dec 24 21:00:48 IST 2012
我希望在两台机器上都获得相同的GMT时间。
这里出了什么问题?