TimeUnit.DAYS.convert(
Math.abs(
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("30-03-2020 00:00:00").getTime() -
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse("1-03-2020 00:00:00").getTime()
),
TimeUnit.MILLISECONDS)
परिणाम 28 है, जबकि यह 29 होना चाहिए।
क्या समय क्षेत्र / स्थान समस्या हो सकती है?
java.time[हालांकि मैं आपको जावा 7 पर ध्यान देता हूं], थ्रीटेनबप , जोडा)।
TimeUnitDST के बारे में कुछ भी जानने का दिखावा नहीं करता है। जैसा कि जैवाडॉक कहता है: एक नैनोसेकंड को एक हजार माइक्रोसेकंड के एक हजारवें हिस्से के रूप में परिभाषित किया गया है, एक माइक्रोसेकंड एक हजार मिलीसेकंड के एक हजारवें हिस्से के रूप में, एक सेकंड के एक हजारवें हिस्से के रूप में एक मिलीसेकंड, साठ सेकंड के रूप में एक मिनट, साठ मिनट के रूप में एक घंटे और एक दिन के रूप में परिभाषित किया गया है। चौबीस घंटे । --- चूंकि DST वर्ष के 2 दिनों का कारण ठीक 24 घंटे नहीं है, TimeUnitइसलिए यह गलत हो जाता है जब DST शामिल होता है।
SimpleDateFormat, क्योंकि यह अप्रचलित है।java.timeइसके बजाय पैकेज का उपयोग करें । मेंSimpleDateFormatके मामले, उपयोगDateTimeFormatter। जावा 7 के मामले में, एंडी टर्नर की टिप्पणी नीचे देखें।