Tôi phải lưu trữ dateTime UTC trong DB.
Tôi đã chuyển đổi dateTime trong múi giờ cụ thể thành UTC. cho rằng tôi đã làm theo mã dưới đây.
Ngày nhập của tôi Thời gian là "20121225 10:00:00 Z" múi giờ là "Châu Á / Calcutta"
Máy chủ / DB (oracle) của tôi đang chạy trong cùng múi giờ (IST) "Châu Á / Calcutta"
Lấy đối tượng Ngày trong Múi giờ cụ thể này
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()));
Lưu trữ vào DB
if (tsSchedStartTime != null) {
stmt.setTimestamp(11, tsSchedStartTime);
} else {
stmt.setNull(11, java.sql.Types.DATE);
}
ĐẦU RA
DB (oracle) đã lưu trữ cùng một dateTime: "20121225 10:00:00
không có trong UTC.
Tôi đã xác nhận từ sql dưới đây.
select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
Máy chủ DB của tôi cũng chạy trên cùng múi giờ "Châu Á / Calcutta"
Nó cho tôi những lần xuất hiện dưới đây
Date.getTime()
không có trong UTC- Hoặc Dấu thời gian có ảnh hưởng múi giờ khi lưu trữ vào DB Tôi đang làm gì sai ở đây?
Một câu hỏi nữa:
Sẽ timeStamp.toString()
in ở múi giờ địa phương như thế java.util.date
nào? Không phải UTC?