如何从 Android 中的毫秒获取一天中的小时数

How can I get the hour of the day from milliseconds in Android

我在网上寻找答案,但没有人回答我想要的。假设我从纪元 System.getCurrentMillis() 开始有一个毫秒。我需要知道一天中的小时,从 00 到 24,最好不是字符串,而是整数。

有没有简单的方法可以做到这一点。目前我正在使用 SimpleDateFormat("HH") 来获取带有 dateFormat 的字符串,但我相信一定有更好的做法。

预先致谢

Calendar time = Calendar.getInstance();
time.setTimeInMillis(milliseconds);
time.get(Calendar.HOUR_OF_DAY)

对于那些不想使用 Calendar 构造函数的人来说,这是另一个可行的解决方案。注意:这仅适用于时区偏移量 = 0!

//extracts Hour Of Day from Calendar milliseconds (TimeZone = 0)
public static int extractHourOfDayFromMS(long ms) {
    int millis = (int) (ms % 86400000);

    if (millis < 0) {
        millis += 86400000;
    }
    while (millis < 0) {
        millis += 86400000;
    }
    while (millis >= 86400000) {
        millis -= 86400000;
    }
    millis /= (1000*60*60);
    return millis % 24;
}

此代码改编自 GregorianCalendar.fullFieldsCalc() 函数。