java - 日历 HOUR_OF_DAY 存在问题

标签 java calendar simpledateformat

在 Debug模式下,我看到我正在解析的值等于“2015-09-01 22:00”。当我创建日历时,我发现 HOUR_OF_DAY 等于 22。 但是,interval 等于 10,而不是 22。错误在哪里?

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class HelloWorld{

     public static void main(String []args){
         try {
        Calendar c = Calendar.getInstance();
        c.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse("2015-09-01 22:00"));
        int interval = c.get(Calendar.HOUR_OF_DAY-1);
        System.out.println(interval);
         }
         catch (Exception ex)
         {
             ex.printStackTrace();
         }
     }
}

最佳答案

您不是在要求 HOUR_OF_DAY值 - 您要求 HOUR_OF_DAY - 1值,实际上对应于 Calendar.HOUR - 12 小时版本:

Field number for get and set indicating the hour of the morning or afternoon. HOUR is used for the 12-hour clock (0 - 11). Noon and midnight are represented by 0, not by 12. E.g., at 10:04:15.250 PM the HOUR is 10.

只需将代码更改为

int interval = c.get(Calendar.HOUR_OF_DAY);

...一切都会好起来的。

关于java - 日历 HOUR_OF_DAY 存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373550/

相关文章:

Java 程序将一个段落作为用户的输入并将分隔符的数量(如\n、空格等)打印到控制台上

java - 将日历时间从java转换为EDM

java - SimpleDateFormat.parse() 忽略模式中的字符数

java - 将 SimpleDateFormat 输出与数字进行比较

Python QtGui 日历小部件调用按钮

android - 如何获取 UTC 的当前时间,添加一些分钟并将其转换为 Kotlin 中的指定格式

java - 如果我有一个想要从多个类访问的对象列表,我应该将这些对象存储在哪里?

java - 当我在项目中添加新库时相关库的协调版本

Java:如何在运行时使用可变参数正确构造正则表达式

java - 如何获取某个月份的所有日期