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
[যদিও আমি মনে করি আপনি জাভা on তে আছেন]], থ্রিটেনবিপি , জোদা)।
TimeUnit
ডিএসটি সম্পর্কে কিছু জানার ভান করে না। যেমন জাভাডোক বলেছেন: একটি ন্যানোসেকেন্ডকে একটি মাইক্রোসেকেন্ডের এক হাজারতম হিসাবে চিহ্নিত করা হয়েছে, একটি মাইক্রোসেকেন্ডকে এক হাজার সেকেন্ডের এক হাজারতম হিসাবে , এক মিলিসেকেন্ডকে সেকেন্ডের এক হাজারতম হিসাবে, এক মিনিটকে ষাট সেকেন্ড হিসাবে, এক ঘন্টা ষাট মিনিট হিসাবে এবং একদিন হিসাবে চব্বিশ ঘণ্টা । --- যেহেতু ডিএসটি বছরের 24 দিন ঠিক 24 ঘন্টা না হওয়ার কারণ দেয় TimeUnit
, তাই ডিএসটি জড়িত থাকার পরে এটি ভুল হয়ে যায়।
SimpleDateFormat
এটি আর ব্যবহার করবেন না anyjava.time
পরিবর্তে প্যাকেজ ব্যবহার করুন । ইনSimpleDateFormat
এর ক্ষেত্রে, ব্যবহারDateTimeFormatter
। জাভা 7 এর ক্ষেত্রে নীচে অ্যান্ডি টার্নারের মন্তব্য দেখুন।