нормализация даты с помощью устаревшего класса Time

следующий метод написан с использованием устаревшего класса android Time

    // To make it easy to query for the exact date, we normalize all dates that go into
// the database to the start of the the Julian day at UTC.
public static long normalizeDate(long startDate) {
    // normalize the start date to the beginning of the (UTC) day
    Time time = new Time();
    time.set(startDate);
    int julianDay = Time.getJulianDay(startDate, time.gmtoff);
    return time.setJulianDay(julianDay);
}

вы можете найти этот метод здесь на линии 47

пожалуйста, помогите мне понять это…

Я попробовал различные (unix, UTC) значения для аргумента startDate, такие как 1464174000 и 1464433200 просто понять выходные данные метода, но метод всегда возвращает 1458000000, который эквивалентен:

15.03.2016 @ 12 :00 (UTC)

посмотреть вывод здесь

так какова же цель метода, если он всегда возвращает одно и то же значение ?

я хочу понять его, чтобы я мог написать его снова с классом GregorianCalendar, который не является устаревшим

1 ответ

  1. Отсюда

    Вызывающие должны передавать время в UTC миллисекунды(как может быть возвращено toMillis(boolean) или normalize (boolean)) и смещение от UTC часового пояса в секундах (как может быть в gmtoff).

    Так startDateдолжно быть в миллисекунду, а не в секунду. Вызов с правильным значением. Например-

    public static long normalizeDate(long startDate) {
        // normalize the start date to the beginning of the (UTC) day
        Time time = new Time();
        time.set(1464181063013);
        int julianDay = Time.getJulianDay(1464181063013, time.gmtoff);
        return time.setJulianDay(julianDay);
    }
    

    Я надеюсь, что это даст вам другой результат.