在int中显示并仅保存小时数

时间:2015-03-01 17:29:28

标签: java time

如何只显示小时数并使用int变量?我的意思是打印时间如下午20:30:44,我只想存储几个小时,在int变量中意味着20。怎么做?

如果你知道,有人可以告诉我代码,谢谢?

2 个答案:

答案 0 :(得分:2)

尝试使用Calendar的get方法,例如:

 Calendar c = ..
 c.setTime(...);//if you have time in long coming from somewhere else
 int hour = c.get(Calendar.HOUR_OF_DAY);

答案 1 :(得分:0)

如果您尝试从String解析时间,我建议使用以下解决方案:

String time = "20:30:44 PM"; // this is your input string
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss aa");

try {
    Date date = sdf.parse(time);

    // this is the uglier solution
    System.out.println("The hour is: "+date.getHours());

    GregorianCalendar gc = new GregorianCalendar();
    gc.setTime(date);

    // this is nicer solution
    System.out.println("The hour is: "+gc.get(Calendar.HOUR_OF_DAY));

} catch (ParseException e) {
    System.err.println("Couldn't parse string! "+e.getMessage());
}

date.getHours()gc.get(Calendar.HOUR_OF_DAY)返回int,在此示例中,我将其打印出来而不创建变量。

当然,您可以使用正则表达式来查找字符串中的小时数,但上面的解决方案应该可以解决问题。您可以详细了解SimpleDateFormat和可用模式here。我希望我能帮到你一点。

编辑:在他的评​​论中,autor指出,该日期不是静态的(如字符串中),而是动态的:

Calendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println("The hour is: "+hour);

我希望这会有所帮助。