Дата преобразования Android Date Wearg в миллисекунды

У меня возникла такая проблема. Я сохраняю Date (yyyy,mm,dd). С этой даты мне нужно получить его представление millisec, но когда я вызываю getTime(), это дает мне неправильное время. В чем проблема?

Example :        
Date testDate= new Date (2015,5,11);

Когда я пытаюсь назвать эту дату миллисекундами, testDate.getTime()

result=61392117600000, but it must be result=1433970000000

Примечание: 5 означает июнь, потому что отсчет начинается с 0.


person ask110593    schedule 19.06.2015    source источник
comment
Работать с java-объектами Date неинтересно. Возможно, вы хотите рассмотреть возможность работы с JodaTime, например, в своем проекте: github.com/dlew/joda- время-андроид   -  person Maximosaic    schedule 19.06.2015


Ответы (2)


Поскольку в классе Date в пакете java.util; метод даты добавляет год из 1900 как

/**
 * Constructs a new {@code Date} initialized to midnight in the default {@code TimeZone} on
 * the specified date.
 *
 * @param year
 *            the year, 0 is 1900.
 * @param month
 *            the month, 0 - 11.
 * @param day
 *            the day of the month, 1 - 31.
 *
 * @deprecated Use {@link GregorianCalendar#GregorianCalendar(int, int, int)} instead.
 */
@Deprecated
public Date(int year, int month, int day) {
    GregorianCalendar cal = new GregorianCalendar(false);
    cal.set(1900 + year, month, day);
    milliseconds = cal.getTimeInMillis();
}

Так что вам нужно изменить

Date testDate= new Date (2015,5,11);

to

Date testDate= new Date (115,5,11);

Рекомендуемый способ — использовать SimpleDateFormat, как указано ниже.

Android конвертирует дату и время в миллисекунды

person Giru Bhai    schedule 19.06.2015

год - год минус 1900; должно быть от 0 до 8099. (Обратите внимание, что 8099 равно 9999 минус 1900.)

Из JavaDoc (http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html)

Поэтому вместо 2015 года вы должны использовать 2015 - 1900 = 115 в качестве параметра года.

person Maximosaic    schedule 19.06.2015