Я создал пару подклассов SimpleDateFormat
, чтобы упростить работу с фидом Azure, о котором я говорю на Android. Один из них выглядит следующим образом:
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);
}
}
Как вы видите, намерение состоит в том, чтобы производить или интерпретировать даты, похожие на
2012-03-17T00: 00: 00,000 + 0100
именно этого ожидает служба Azure. Однако, когда я добавляю Date
объекты, построенные из DatePicker
, таким образом:
mDate = new Date(mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
Выход ISO8601TLDateFormat
равен
3912-03-17T00: 00: 00,000 + 0100
Как видите, год на 1900 больше, чем мне или кому-либо еще, не являющемуся из будущего . Я исследовал объект Date
на всем пути к системе каналов Azure, и он сообщает, что его дата - 2012 год, чего я и ожидал. Почему SimpleDateFormat
ломается?