使用已弃用的Time类来标准化日期

时间:2016-05-25 12:40:49

标签: java android

使用不推荐使用的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);
}

you can find this method here at line 47

请帮助我理解......

我为 startDate 参数尝试了不同的(unix,UTC)值,例如1464174000和1464433200只是为了理解方法的输出,但方法总是返回 1458000000 ,这是相当于:

03/15/2016 @ 12:00 am(UTC)

see the output here

那么如果方法总是返回相同的值,那么该方法的目的是什么?

我想理解它,以便我可以使用不被弃用的GregorianCalendar类再次编写它

1 个答案:

答案 0 :(得分:0)

来自here

  

调用者必须以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);
}

我希望它会给你一个不同的结果。