La subclase SimpleDateFormat añade 1900 al año
He creado un par de subclases de SimpleDateFormat
para simplificar el trato con un feed de Azure al que estoy hablando en Android. Uno de ellos es el siguiente:
public class ISO8601TLDateFormat extends SimpleDateFormat { private static String mISO8601T = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; public ISO8601TLDateFormat() { super(mISO8601T); } public ISO8601TLDateFormat(Locale inLocale) { super(mISO8601T, inLocale); } }
Como se puede ver, la intención es producir o interpretar fechas que parezcan
- Cómo ocultar el encabezado en CalendarView en DatePicker?
- Problema de compatibilidad de Android DatePicker con la biblioteca MonkeyTalk
- Cómo buscar una fecha de un datepicker en NativeScript
- ¿Podemos mostrar el estilo de lollipop DatePicker en los dispositivos kitkat?
- Android - Nuevo estilo de calendario DatePicker y TimePicker
2012-03-17T00: 00: 00.000 + 0100
Que es lo que el servicio Azure está esperando. Sin embargo, cuando alimento en objetos de Date
construido de un DatePicker
así:
mDate = new Date(mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
La salida de la ISO8601TLDateFormat
es
3912-03-17T00: 00: 00.000 + 0100
Como puede ver, el año es 1900 más que yo, o cualquier otra persona que no sea del futuro , necesitaría. He examinado el objeto Date
en su viaje entero al sistema de alimentación de Azure y informa que su fecha es 2012, que es lo que yo hubiera esperado. ¿Por qué se SimpleDateFormat
el SimpleDateFormat
?
- ¿Cómo alimentar el widget de DatePicker con otros sistemas de calendario?
- Android: Cómo obtener valores de la selección de fecha y hora
- Cómo cambiar los colores "Dividers" de Dialog de DatePicker de Android
- Visualización de un DatePicker con o sin el campo del año
- Android Datepicker Fragment - ¿Cómo hacer algo cuando el usuario establece una fecha?
- Android: ¿Cómo diseñar el DatePicker?
- Cómo deshabilitar fechas futuras en el selector de fechas de Android
- DatePicker muestra el valor incorrecto del mes
El problema es que los constructores de Date
no reciben lo que esperan. Tomado de la documentación de java:
public Date(int year, int month, int date) Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date). Allocates a Date object and initializes it so that it represents midnight, local time, at the beginning of the day specified by the year, month, and date arguments. Parameters: year - the year minus 1900. month - the month between 0-11. date - the day of the month between 1-31.
Usted necesita tener presente que usted construye una fecha con 0, 0, 1
siendo el 1 de enero de 1900.
- No se puede extraer el archivo del archivo ZIP creado en Android (específico de dispositivo / OS)
- No puedo finrar R.raw.xxx