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

Java 在Android中,如何从毫秒数获取一天中的小时数,java,android,time,Java,Android,Time,我在网上寻找答案,但没有人能准确回答我想要的答案。假设我离epoch还有一毫秒,System.getCurrentMillis()。我需要知道一天中的小时,从00到24,最好不是字符串,而是整数 有没有一个简单的方法来实现这一点。目前,我正在使用SimpleDateFormat(“HH”)获取带有dateFormat的字符串,但我相信一定有更好的做法 提前感谢为那些不想使用日历构造函数的人提供了另一个可行的解决方案。注意:这仅适用于时区偏移=0 Calendar time = Calendar.

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

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


提前感谢

为那些不想使用日历构造函数的人提供了另一个可行的解决方案。注意:这仅适用于时区偏移=0

Calendar time = Calendar.getInstance();
time.setTimeInMillis(milliseconds);
time.get(Calendar.HOUR_OF_DAY)
//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;
}
//从日历毫秒中提取一天中的小时(时区=0)
公共静态int-extractHourOfDayFromMS(长毫秒){
整数毫秒=(整数)(毫秒%86400000);
如果(毫秒<0){
毫秒+=86400000;
}
而(毫秒<0){
毫秒+=86400000;
}
而(毫秒>=86400000){
毫秒-=86400000;
}
毫/=(1000*60*60);
返回毫秒%24;
}

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

对于那些不想使用日历构造函数的人来说,这是另一个可行的解决方案。注意:这仅适用于时区偏移=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;
}
//从日历毫秒中提取一天中的小时(时区=0)
公共静态int-extractHourOfDayFromMS(长毫秒){
整数毫秒=(整数)(毫秒%86400000);
如果(毫秒<0){
毫秒+=86400000;
}
而(毫秒<0){
毫秒+=86400000;
}
而(毫秒>=86400000){
毫秒-=86400000;
}
毫/=(1000*60*60);
返回毫秒%24;
}

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

首先使用Calendar.setTimeInMillis,然后获取您想要的任何字段。首先使用Calendar.setTimeInMillis,然后获取您想要的任何字段