2012-01-01 9 views
10

uzyskać bieżącą datę i czasDlaczego rok bieżący w dniu zapisany jako 3912?

final Calendar c = Calendar.getInstance(); 
mYear = c.get(Calendar.YEAR); 
mMonth = c.get(Calendar.MONTH); 
mDay = c.get(Calendar.DAY_OF_MONTH); 
mHour = c.get(Calendar.HOUR_OF_DAY); 
mMinute = c.get(Calendar.MINUTE); 

stworzyć datę bieżącego obiektu

Date toDate; 
    toDate.setYear(mYear); 
    toDate.setMonth(mMonth); 
    toDate.setDate(mDay); 



Date endDate = toDate; 

podczas drukowania endDate obiekt dostałem

Mon Jan 01 13:11:00 GMT+03:00 3912 

dlaczego?

+0

y2.012K błąd jest przyczyną problemów –

+0

Czy Twój czas systemowy rozregulowany roku? – Andrew

Odpowiedz

18

Od Date.setYear(int) opis: Ustawia gregoryjski rok kalendarzowy od 1900 dla tego obiektu Date. Tak więc, 1900 + 2012 = 3912.

Ale calendar.get(Calendar.YEAR) zwraca dokładny numer roku 2012. Ta niespójność API powoduje Twój problem. Ale i tak Date.setYear(int) jest przestarzałe, dlatego lepiej jest użyć obiektu Calendar do obliczeń daty.

+0

to co mam zrobić? – Bader

+0

@AdhamEnaya Możesz odjąć '1900' od numeru roku:' doDate.setYear (mYear - 1900) '. Ale lepiej zaproponuj użycie obiektu "Kalendarz" do obliczeń daty. –

0

Lepiej używać Kalendarz

Calendar cal=Calendar.getInstance(); 
cal.set(Calendar.YEAR,myear); 

(tj)

cal.set(Calendar.YEAR,2016); 
Powiązane problemy