我在网上寻找答案,但没有人回答我想要的答案。假设我距离纪元System.getCurrentMillis()
有一毫秒。我需要知道所述millis的一天中的小时,只是小时,从00到24,理想情况下不是字符串,而是int。
有没有简单的方法来实现这一目标。目前我正在使用SimpleDateFormat("HH")
来获取dateFormat
字符串,但我确信必须有更好的做法。
事先谢谢
答案 0 :(得分:10)
Calendar time = Calendar.getInstance();
time.setTimeInMillis(milliseconds);
time.get(Calendar.HOUR_OF_DAY)
答案 1 :(得分:0)
为那些不想使用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()函数。