如何从 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() 函数。
我在网上寻找答案,但没有人回答我想要的。假设我从纪元 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() 函数。