जोडाटाइम का डेटटाइम कन्स्ट्रक्टर अब आपके लिए इसे संभाल सकता है। (मुझे यकीन है कि अगर सच था जब प्रश्न पोस्ट किया गया था नहीं कर रहा हूँ, लेकिन यह एक शीर्ष गूगल परिणाम तो मैं मैं एक नए समाधान जोड़ा जाने लगा है।)
कुछ एपीआई विकल्प है:
public DateTime(Object instant);
public DateTime(Object instant, DateTimeZone zone);
दोनों विकल्प java.sql.Timestamp स्वीकार करते हैं क्योंकि यह java.util.Date को बढ़ाता है, लेकिन नैनोसेकंड को अनदेखा कर दिया जाएगा (क्योंकि फर्श), दिनांक दिनांक और दिनांक में केवल मिलीसेकंद रिज़ॉल्यूशन * है। एक विशिष्ट टाइमज़ोन के बिना यह डेटटाइमज़ोन.यूटीसी पर डिफ़ॉल्ट होगा।
< डिडैक्टिक मोड >
"समाधान" कितने अंक प्रदान किए जाते हैं। "प्रेसिजन" प्रतिनिधित्व कितना सटीक है। उदाहरण के लिए, एमएसएसक्यूएल के डेटटाइम में मिलीसेकंद रिज़ॉल्यूशन है, लेकिन दूसरी परिशुद्धता के केवल ~ 1/3 (डेटटाइम 2 में परिवर्तनीय रिज़ॉल्यूशन और उच्च परिशुद्धता है)।
</उपदेशात्मक मोड >
मिलीसेकंड साथ
यूटीसी टाइमस्टैम्प संकल्प उदाहरण:
new DateTime(resultSet.getTimestamp(1));
आप अपने डेटाबेस में समय क्षेत्र के साथ TIMESTAMP का उपयोग कर रहे हैं तो आप java.sql.Timestamp उपयोग नहीं कर सकते, क्योंकि यह समय क्षेत्र का समर्थन नहीं करता है। आपको ResultSet # getString का उपयोग करना होगा और स्ट्रिंग को पार्स करना होगा।
DateTime dt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
.parseDateTime(resultSet.getString(1));
समय क्षेत्र (ऑफसेट प्रारूप) दूसरा संकल्प उदाहरण के साथ साथ टाइमस्टैम्प:
LocalDateTime dt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
.parseLocalDateTime(resultSet.getString(1));
यूटीसी दूसरा संकल्प उदाहरण ** साथ टाइमस्टैम्प:
दूसरा संकल्प उदाहरण ** के साथ समय क्षेत्र के बिना समय-चिह्न **:
DateTime dt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss Z")
.parseDateTime(resultSet.getString(1));
बोनस: डेटटाइमफॉर्मैट # के लिए मानक स्थिर सहयोगी पार्स पैटर्न द्वारा पार्सर्स तो आपको करने की ज़रूरत नहीं है।
< उपदेशात्मक मोड >
मैं आम तौर पर आदेश संकल्प स्पष्ट बनाने के लिए और मध्यवर्ती वस्तुओं पैदा करने से बचने के लिए अपने डीबीओ मॉडल में एक स्ट्रिंग का उपयोग करें। (2013-11-14 09:55:25 2013-11-14 के बराबर है 09: 55: 25.000?) मैं आम तौर पर डेटा संरक्षण चिंताओं और "व्यापार मॉडल ऑब्जेक्ट्स" के बीच ऑप्टिमाइज़ करने के लिए "डेटाबेस मॉडल ऑब्जेक्ट्स" के बीच अंतर करने की कोशिश करता हूं जो सेवा स्तर के उपयोग के लिए अनुकूलन/मैपिंग परत के बीच अनुकूलित होता है। मुझे लगता है कि सीआरयूडी आधारित डीएओ व्यवसाय वस्तुओं को उत्पन्न करते हैं, जो प्राथमिकताओं को मिश्रण करने और न तो ऑप्टिमाइज़ करने के लिए सीधे होते हैं, मिस्ड एज मामलों के कारण अप्रत्याशित स्थानों से अपवाद फेंकते हैं। एक स्पष्ट परिवर्तन परत होने पर भी आपको आवश्यकतानुसार सत्यापन जोड़ने की अनुमति मिलती है, जैसे कि आप डेटा स्रोत को नियंत्रित नहीं करते हैं। चिंताओं को अलग करना भी प्रत्येक परत को स्वतंत्र रूप से परीक्षण करना आसान बनाता है।
</उपदेशात्मक मोड >
* यदि आप अपने व्यापार मॉडल में nanosecond समाधान करने के लिए हल करने की जरूरत है आप एक अलग पुस्तकालय का उपयोग करना होगा।
** टाइम्सस्टैम्प स्ट्रिंग प्रारूप डेटाबेस के बीच भिन्न हो सकता है, सुनिश्चित नहीं है।
टाइमज़ोन घटक के बारे में कहां? आपने दिनांक और समय केवल "कॉपी" किया है, लेकिन टाइमज़ोन नहीं जो वास्तविक मूल्य को प्रभावित कर सकता है ... –
क्या आप इसका मतलब बता सकते हैं? dateTime.getMillis() युग के बाद मिलीसेकंड देता है, जो टाइमज़ोन को ध्यान में रखता है। –
यह ध्यान देने योग्य है कि जोडा-टाइम नैनोसेकंड स्टोर नहीं करता है जबकि टाइमस्टैम्प करता है। दोनों के बीच कोई भी रूपांतरण नैनोसेकंद परिशुद्धता खो देगा। – Gili