我正在使用以下代码尝试获取 unix 时间戳的 HOUR_OF_DAY (0-23),并将其转换为毫秒。时间戳“1296442971”转换为 Sun Jan 30 2011 22:02:51 GMT-0500 (EST)。
我正在运行以下代码来尝试获取 24 小时时间戳:
//calculate the hour for this timestamp
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone(tz));
calendar.setTimeInMillis(ts * 1000);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int twelveHour = calendar.get(Calendar.HOUR);
在此示例中,“小时”和“十二小时”的值均为 10,而“小时”的值应为“22”。有人知道我的代码可能有什么问题吗?
谢谢!
最佳答案
假设 ts 是包含值 1296442971 的变量。我相信您没有将它声明为long类型,因此它可能会溢出
将 ts 更改为 long 类型后,下面的工作
long l = 1296442971;
calendar.setTimeInMillis(l * 1000);
out.println(calendar.getTime());
out.println(calendar.get(Calendar.HOUR_OF_DAY));
out.println(calendar.get(Calendar.HOUR));
关于java HOUR 和 HOUR_OF_DAY 都返回 12 小时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847716/