时间戳时区是特定的吗?
我必须将UTC dateTime存储在DB中。
我已经将特定时区中给定的日期时间转换为UTC。为此,我遵循了以下代码。
我的输入日期是“20121225 10:00 Z”时区是“亚洲/加尔各答”
MyServer/DB(Oracle)运行在同一时区(IST)“Asia/Calcutta”
在这个特定的时区中获取日期对象String date = "20121225 10:00:00 Z";
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));
}
//assigning to the java.sql.TimeStamp instace variable
obj.setTsSchedStartTime(new java.sql.Timestamp(parsedDate.getTime()));
存储到DB中if (tsSchedStartTime != null) {
stmt.setTimestamp(11, tsSchedStartTime);
} else {
stmt.setNull(11, java.sql.Types.DATE);
}
输出量
DB(Oracle)存储了相同的给定dateTime: "20121225 10:00:00不是在世界协调时。
我已经从下面的SQL中确认了这一点。select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
我的DB服务器也运行在同一时区“Asia/Calcutta”上。
它给了我以下的表象Date.getTime()不在世界协调时
或者时间戳在存储到DB时有时区影响,我在这里做错了什么?
还有一个问题:
将要timeStamp.toString()在本地时区打印,如java.util.date有吗?不是UTC?