2012-01-01 7 views
10

para obtener la fecha y hora actuales¿Por qué el año actual en la fecha guardada como 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); 

para crear la fecha objeto actual

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



Date endDate = toDate; 

al imprimir objetos endDate llegué

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

por qué?

+0

fallo y2.012K está causando –

+0

Es el tiempo del sistema se establece en el año correcto? – Andrew

Respuesta

18

De Date.setYear(int) Descripción: Establece el año calendario gregoriano desde 1900 para este objeto Date. Por lo tanto, 1900 + 2012 = 3912.

Pero calendar.get(Calendar.YEAR) devuelve el número de año exacto 2012. Por lo tanto, esta incoherencia de API causa su problema. Pero de todos modos Date.setYear(int) está en desuso, por lo tanto, es mejor utilizar el objeto Calendar para los cálculos de fecha. cuestiones

+0

¿entonces qué tengo que hacer? – Bader

+0

@AdhamEnaya Puede restar '1900' del número de año:' toDate.setYear (mYear - 1900) '. Pero mejor sugiero usar el objeto 'Calendario' para los cálculos de fecha. –

0

Es mejor usar Calendario

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

(es decir)

cal.set(Calendar.YEAR,2016); 
Cuestiones relacionadas