ओपी इस सवाल का जवाब एक चल JVM का एक उदाहरण के लिए डिफ़ॉल्ट समय क्षेत्र बदलने के लिए, user.timezone
प्रणाली गुण सेट:
java -Duser.timezone=GMT ... <main-class>
आप के लिए की जरूरत है ResultSet
डेटाबेस से दिनांक/समय/टाइमस्टैम्प ऑब्जेक्ट्स को पुनर्प्राप्त करते समय विशिष्ट समय क्षेत्र सेट करें, getXXX
विधियों का दूसरा रूप उपयोग करें जो Calendar
ऑब्जेक्ट लेता है:
Calendar tzCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
ResultSet rs = ...;
while (rs.next()) {
Date dateValue = rs.getDate("DateColumn", tzCal);
// Other fields and calculations
}
या, एक PreparedStatement में तारीख की स्थापना:
Calendar tzCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
PreparedStatement ps = conn.createPreparedStatement("update ...");
ps.setDate("DateColumn", dateValue, tzCal);
// Other assignments
ps.executeUpdate();
ये सुनिश्चित करेंगे कि डेटाबेस में संग्रहीत मूल्य संगत है जब डेटाबेस स्तंभ समयक्षेत्र जानकारी नहीं रखता।
java.util.Date
और java.sql.Date
कक्षाएं यूटीसी में वास्तविक समय (मिलीसेकंड) स्टोर करती हैं। इन आउटपुट पर किसी अन्य टाइमज़ोन पर प्रारूपित करने के लिए, SimpleDateFormat
का उपयोग करें। तुम भी एक कैलेंडर वस्तु का उपयोग कर मूल्य के साथ एक समय क्षेत्र संबद्ध कर सकते हैं:
TimeZone tz = TimeZone.getTimeZone("<local-time-zone>");
//...
Date dateValue = rs.getDate("DateColumn");
Calendar calValue = Calendar.getInstance(tz);
calValue.setTime(dateValue);
स्रोत
2010-04-13 09:54:04
दरअसल, उसकी समस्या मेरा एक सबसेट है, लेकिन मुझे एक समाधान मिला। – SyBer
डुप्लिकेट प्रश्न देखें, और "जोडा" और "डेटटाइमज़ोन" की खोज करें। –