मेरे पास दिनांक प्रारूप हैं: EEE, dd MMM yyyy HH:mm:ss Z

उदाहरण के लिए,

दिनांक 1: सोम सितम्बर 10 08:32:58 जीएमटी 2018

दिनांक 2: मंगल सितम्बर 11 03:56:10 जीएमटी 2018

मुझे उपरोक्त मामले में 1 के रूप में दिनांक अंतर की आवश्यकता है, लेकिन मुझे 0 के रूप में मान मिल रहा है यदि मैं joda दिनांक समय का उपयोग करता हूं या मैन्युअल रूप से दिनांक को मिलीसेकंड में परिवर्तित करता हूं।

संदर्भ के लिए: http://www। mkyong.com/java/how-to-calculate-date-time-difference-in-java/

कोई भी लीड मददगार होगी। उदाहरण :

Date date1 = new Date("Mon Sep 10 08:32:58 GMT 2018");
Date date2 = new Date("Tue Sep 11 03:56:10 GMT 2018");
DateTime start = new DateTime(date1 );
DateTime end = new DateTime(date2);
int days = Days.daysBetween(start, end).getDays();
System.out.println("Date difference: " + days);

आउटपुट: दिनांक अंतर: 0

1
Meenakshi Rathod 11 सितंबर 2018, 07:48

2 जवाब

सबसे बढ़िया उत्तर

Joda-Time केवल पूरे दिनों को गिनता है, दूसरे शब्दों में, अंतर को पूर्ण संख्या में छोटा कर देता है। इसलिए आपके मानों के बीच 19 घंटे से थोड़ा अधिक समय होने पर यह 0 दिनों के रूप में गिना जाता है। यदि आप तिथियों के समय भाग को अनदेखा करना चाहते हैं, तो पहले LocalDate में कनवर्ट करें:

    int days = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays();

(एक टिप्पणी में स्वयं को ठोस कोड प्रदान करने के लिए धन्यवाद। चूंकि आपने कहा था कि यह काम करता है, मैंने सोचा कि यह एक उत्तर होने योग्य है।)

2
Ole V.V. 11 सितंबर 2018, 09:34

जैसा कि पिछली टिप्पणियों में बताया गया है, जोडा-टाइम पूरे दिन और राउंड डाउन गिनता है। इसलिए आपको तुलना करते समय समय छोड़ना होगा। कुछ इस तरह काम करेगा, तारीखों की तुलना Java.time का उपयोग करके:

Date date1 = new Date("Mon Sep 10 08:32:58 GMT 2018");
Date date2 = new Date("Tue Sep 11 03:56:10 GMT 2018");
LocalDate start = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long between = ChronoUnit.DAYS.between(start, end);

System.out.println("Date difference: " + between);
2
joese 11 सितंबर 2018, 10:13