سؤال

لدي سؤال حول فئة SimpleDateFormat وطريقة مقارنة java.util.date:

أنا أقوم بإنشاء كائن تاريخ، ثم أنا تنسيق، وأخيرا تحليل السلسلة المنسقة ومقارنة التاريخ الأصلي.

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();

String s = df.format(originalDate);
Date parsedDate = df.parse(s);

System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));

النتائج:

تاريخ الاستخدام: Mon Jan 25 15:43:23 Cet 2010 تنسيق التاريخ: 2010.jan.25 03:43:23 868 Originaldate مقارنة Parseddate: 1

لماذا الحصول على دائما "1"؟ لماذا الموعد الأصلي للمبشرة من تاريخ التحليل؟

هل كانت مفيدة؟

المحلول

أعتقد أنها مشكلة ذات صلة 24 ساعة، وتاريخك الأصلي 15، لذلك 3 مساء، في حين أن تحليلك هو بتنسيق 12 ساعة، وهذا لأنك استخدمت حاء تنسيق محدد بدلا من حاء تنسيق محدد. ثم يتم تحويل ساعة إلى السلسلة الخاطئة حتى تفقد الدقة لأنه عند الطرد 03 يعتبر 3 صباحا. محاولة مع:

DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");

نصائح أخرى

إنه يعمل إذا أضفت علامة AM / PM - a

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");

إذا كنت ترغب في مقارنة التواريخ، فربما تستخدم الحزن () لمقارنة القيمتين ستكون فكرة أفضل ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top