لماذا لا أحصل على الحق العام باستخدام SimpleDateFormat في جافا؟

StackOverflow https://stackoverflow.com/questions/1028139

سؤال

وأنا في محاولة لتحليل بيانات في تنسيق MySql، وعدوت عبر SimpleDateFormat. يمكنني الحصول على اليوم السليم والشهر، ولكن حصلت على نتيجة غريبة للسنة:

date = 2009-06-22;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Date d = sdf.parse(date);
System.println(date);
System.println(d.getDate());
System.println(d.getMonth());
System.println(d.getYear());

والمخرجات:

2009-06-22
22           OK
5            Hum... Ok, months go from 0 to 11
109          o_O WTF ?

وحاولت تغيير شكل لYYYY-MM-dd (حصل خطأ) وyy-MM-dd (لم تفعل شيئا). أنا البرمجة على الروبوت، لا أعرف ما إذا كان من المهم.

والآن، وأنا تجاوز أن استخدام الانقسام، لكنه القذرة ومنعي من استخدام ميزات I18N.

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

المحلول

وهذا العام هو نسبة إلى 1900. هذا هو "ميزة" الطبقة Date. محاولة استخدام Calender.

نصائح أخرى

وبفضل هارون، الإصدار الصحيح:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top