2009-05-06 16 views
7

मुझे क्या करना है:जावा/सर्वलेट: वर्तमान sql.Date

1) अनुरोध से उपयोगकर्ता का लोकेल प्राप्त करें।

2), वर्तमान दिनांक और समय के साथ नए sql.Date वस्तु बनाएं उपयोगकर्ता किसी भी स्थान

3 के आधार पर) MySQL DB में यह लिखें, स्तंभ प्रकार: TIMESTAMP

मुझे क्या मिला है:

java.util.Locale locale = request.getLocale(); 

java.text.DateFormat dateFormat = 
java.text.DateFormat.getDateTimeInstance(
         java.text.DateFormat.LONG, java.text.DateFormat.LONG, locale); 

java.util.Date date = new java.util.Date(); 

java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 

दिनांक ठीक है, लेकिन समय के साथ समस्या है - हमेशा 12:00:00 पूर्वाह्न।

कोई सुझाव? क्या ऐसा करने का एक और अधिक प्रभावी तरीका है?

उत्तर

4

यदि आप समय चाहते हैं, तो आपको java.sql.Timestamp की आवश्यकता नहीं है java.sql.Date, और डेटाबेस में टाइमस्टैम्प कॉलम।

+0

बिल्कुल। एक संकेत के लिए धन्यवाद! – Artemij

+0

धन्यवाद। यह वही है जो मैं देख रहा था :) –

0

ध्यान दें कि request.getLocale स्वीकार्य-भाषा शीर्षक के मान का उपयोग करता है और आपको हमेशा सही लोकेल नहीं दे सकता है।

+0

मैं इसे ध्यान में रखूंगा। धन्यवाद। – Artemij

0

लोकेल के आधार पर समय क्षेत्र प्राप्त करना उनके वास्तविक समय क्षेत्र नहीं हो सकता है।

एक उदाहरण: यहां ऑस्ट्रेलिया में, लोकेल 'एन-एयू' है, लेकिन हमारे पास 3 घंटे के अंतर के साथ कुछ समय क्षेत्र हैं।

मुझे लगता है कि अमेरिका में उन्हें यह समस्या भी है।

एक संभावित समाधान स्टोर यूटीसी समय के बजाय एक संभावित समाधान है। यदि उपयोगकर्ता अपना टाइमज़ोन समायोजित करता है, तो कहें, उसके prefrences, या आप समय क्षेत्र (ग्राहक/ब्राउज़र जानकारी AJAX के माध्यम से कहते हैं) गुजरने के कुछ अन्य तरीकों का उपयोग करते हैं, तो आप java.util.Calendar उदाहरण का उपयोग कर उस पर आधारित यूटीसी समय समायोजित कर सकते हैं।

+0

उस महत्वपूर्ण नोट के लिए धन्यवाद। क्या आप सुरुचिपूर्ण समाधान का एक उदाहरण सुझा सकते हैं? – Artemij

9

इसके लिए एक और आसान समाधान है। उपयोग इस कोड java.util.Date

java.util.Calendar cal = java.util.Calendar.getInstance(); 
java.util.Date utilDate = cal.getTime(); 
java.sql.Date sqlDate = new Date(utilDate.getTime()); 
+1

एक और कॉम्पैक्ट समाधान है: 'java.util.Calendar cal = java.util.Calendar.getInstance();' 'java.sql.Date timeNow = new Date (cal.getTimeInMillis());' – Ryan

17

यहां तक ​​कि एक अधिक कॉम्पैक्ट समाधान का उपयोग आज की तारीख पाने के लिए;)

java.sql.Date timeNow = new Date(Calendar.getInstance().getTimeInMillis()); 
संबंधित मुद्दे