मुझे यूबी डेटाइम को डीबी में स्टोर करना है।
मैंने विशिष्ट टाइमज़ोन में दी गई तारीख समय को यूटीसी में बदल दिया है। उसके लिए मैंने नीचे दिए गए कोड का पालन किया।
मेरा इनपुट डेटटाइम "20121225 10:00:00 Z" टाइमज़ोन है "एशिया / कलकत्ता"
मेरा सर्वर / DB (ओरेकल) उसी टाइमज़ोन (IST) "एशिया / कलकत्ता" में चल रहा है
इस विशिष्ट समयक्षेत्र में दिनांक ऑब्जेक्ट प्राप्त करें
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
यूटीसी में दिए गए समान को संग्रहीत किया है ।
मैंने नीचे दिए गए एसक्यूएल से पुष्टि की है।
select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
मेरा DB सर्वर भी उसी समयक्षेत्र "एशिया / कलकत्ता" पर चल रहा है
यह मुझे नीचे दिखावे देता है
Date.getTime()
UTC में नहीं है- या टाइमस्टैम्प का डीबी में भंडारण करते समय टाइमजोन प्रभाव पड़ता है मैं यहां क्या गलत कर रहा हूं?
एक और प्रश्न:
क्या timeStamp.toString()
स्थानीय टाइमज़ोन में प्रिंट होगा java.util.date
? UTC नहीं?