我必须将UTC dateTime存储在数据库中。
我已将特定时区中给定的dateTime转换为UTC。为此,我遵循以下代码。
我输入的日期时间是“ 20121225 10:00:00 Z”,时区是“ Asia / Calcutta”。
我的服务器/数据库(oracle)在同一时区(IST)“ Asia / Calcutta”中运行
获取此特定时区中的Date对象
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()));
存入数据库
if (tsSchedStartTime != null) {
stmt.setTimestamp(11, tsSchedStartTime);
} else {
stmt.setNull(11, java.sql.Types.DATE);
}
输出值
DB(oracle)已存储dateTime: "20121225 10:00:00
UTC中未提供的相同内容。
我已经从下面的sql中确认了。
select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
我的数据库服务器也在同一时区“ Asia / Calcutta”上运行
它给了我以下外观
Date.getTime()
不在UTC- 或在存储到数据库中时,时间戳对时区有影响?我在这里做错什么?
还有一个问题:
会timeStamp.toString()
像当地时区一样打印java.util.date
吗?不是UTC?