में डेटटाइम के तुरंत सेकंड और मिलीसेकंड तत्काल की तारीखों की तुलना करना, मान लीजिए कि मेरे पास निम्न की तरह दो तिथियां हैं।जोडा
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yyyy HH:mm:ss").withZone(DateTimeZone.forID("Asia/Kolkata"));
DateTime firstDate = formatter.parseDateTime("16-Feb-2012 12:03:45");
DateTime secondDate = formatter.parseDateTime("17-Feb-2013 12:03:45");
मैं देखना इन दो तिथियों की तुलना करना चाहते हैं कि क्या firstDate
, उतनी ही जल्दी है बाद में या secondDate
के बराबर।
मैं निम्नलिखित का प्रयास कर सकता हूं।
System.out.println("firstDate = "+firstDate+"\nsecondDate = "+secondDate+"\ncomparison = "+firstDate.isBefore(secondDate));
System.out.println("firstDate = "+firstDate+"\nsecondDate = "+secondDate+"\ncomparison = "+firstDate.isAfter(secondDate));
System.out.println("firstDate = "+firstDate+"\nsecondDate = "+secondDate+"\ncomparison = "+firstDate.equals(secondDate));
इस कोड द्वारा उत्पादित किया गया है जो मैं चाहता हूं।
यह निम्न आउटपुट उत्पन्न करता है।
firstDate = 2012-02-16T12:03:45.000+05:30
secondDate = 2013-02-17T12:03:45.000+05:30
comparison = true
firstDate = 2012-02-16T12:03:45.000+05:30
secondDate = 2013-02-17T12:03:45.000+05:30
comparison = false
firstDate = 2012-02-16T12:03:45.000+05:30
secondDate = 2013-02-17T12:03:45.000+05:30
comparison = false
मैं सेकंड और इन तिथियों के मिलीसेकेंड भाग की अनदेखी करने की जरूरत है। मैंने withSecondOfMinute(0)
और withMillis(0)
विधियों का उपयोग निम्न विधियों का उपयोग करने का प्रयास किया है।
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yyyy HH:mm:ss").withZone(DateTimeZone.forID("Asia/Kolkata"));
DateTime firstDate = formatter.parseDateTime("16-Feb-2012 12:03:45").withSecondOfMinute(0).withMillis(0);
DateTime secondDate = formatter.parseDateTime("17-Feb-2013 12:03:45").withSecondOfMinute(0).withMillis(0);
लेकिन यह निम्न उत्पादन सामने आए।
firstDate = 1970-01-01T05:30:00.000+05:30
secondDate = 1970-01-01T05:30:00.000+05:30
comparison = false
firstDate = 1970-01-01T05:30:00.000+05:30
secondDate = 1970-01-01T05:30:00.000+05:30
comparison = false
firstDate = 1970-01-01T05:30:00.000+05:30
secondDate = 1970-01-01T05:30:00.000+05:30
comparison = true
withSecondOfMinute()
विधि के दस्तावेज़ बताते हैं।
इस डेटाटाइम की दूसरी प्रति मिनट फ़ील्ड अद्यतन के साथ एक प्रतिलिपि देता है। डेटटाइम अपरिवर्तनीय है, इसलिए कोई सेट विधि नहीं है। इसके बजाए, यह विधि दूसरे मिनट के मूल्य के साथ एक नया उदाहरण देता है।
और विधि withMillis()
विधि के दस्तावेज़ कहते हैं।
विभिन्न मिलिस के साथ इस डेटाटाइम की प्रतिलिपि देता है। लौटा ऑब्जेक्ट या तो एक नया उदाहरण या यह होगा। केवल मिलिस परिवर्तन, कालक्रम और समय क्षेत्र रखा जाएगा।
समय भाग को अनदेखा करके तिथियों की तुलना पूरी तरह से DateTimeComparator.getDateOnlyInstance()
का उपयोग करके आसानी से किया जा सकता है।
if(DateTimeComparator.getDateOnlyInstance().compare(firstDate, secondDate)==0){}
if(DateTimeComparator.getDateOnlyInstance().compare(firstDate, secondDate)<0){}
if(DateTimeComparator.getDateOnlyInstance().compare(firstDate, secondDate)>0){}
कैसे (इस मामले में सेकंड और मिलीसेकंड) DateTime
में विशिष्ट तत्काल अनदेखी दो तिथियों तुलना करने के लिए?
बहुत बहुत धन्यवाद। किया हुआ! – Tiny
@Tiny। आपका स्वागत है :) –