java HOUR和HOUR_OF_DAY都返回12小时的时间

Tom*_*omb 5 java hour unix-timestamp

我使用以下代码尝试获取unix时间戳的HOUR_OF_DAY(0-23),转换为毫秒.时间戳'1296442971'将转换为2011年1月30日星期日22:02:51 GMT-0500(美国东部时间).

我正在运行以下代码以尝试获取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);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,'hour'和'DecemberHour'的值都是10,而'hour'的值应该是'22'.有没有人对我的代码有什么问题有任何想法?

谢谢!

Ara*_*ram 7

假设ts是包含值1296442971的变量.我相信你没有宣称它是型的,因此可能会溢出

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));
Run Code Online (Sandbox Code Playgroud)