从类型为#34; hh:mm:ss"的字符串中获取Java小时

时间:2017-11-30 15:14:07

标签: java string

我有两个格式的字符串" hh:mm:ss"。我想只获取两个字符串的小时部分并找到它们之间的区别。我该怎么做。我试过Dateformat并解析函数,但当我减去时,它会告诉坏操作数类型。 代码:

 String ta="";
 String tb="";
 int diff;
 Scanner s=new Scanner(System.in);
 ta=s.nextLine();
 tb=s.nextLine();
 DateFormat sdf = new SimpleDateFormat("hh");
 Date date1 = sdf.parse(ta);
 Date date2 = sdf.parse(tb);
 diff=sdf.format(date1)-sdf.format(date2);
 if(diff==20)
     System.out.println("Twenty");

2 个答案:

答案 0 :(得分:3)

您可能根本不需要将其转换为Date

String time1 = "07:00:55";
String time2 = "05:00:33";
String time1Sub = time1.substring(0, time1.indexOf(':'));
String time2Sub = time2.substring(0, time2.indexOf(':'));
System.out.println(Integer.parseInt(time1Sub) - Integer.parseInt(time2Sub));

修改

根据下面的评论,如果您想要完整小时,您可以检查小时位置的差异(如果有更好的方法,可以随时编辑)。

String hour1 = time1.substring(time1.lastIndexOf(':') - 2, time1.lastIndexOf(':'));
String hour2 = time2.substring(time1.lastIndexOf(':') - 2, time2.lastIndexOf(':'));
int result = Integer.parseInt(time1Sub) - Integer.parseInt(time2Sub);
System.out.println(Integer.parseInt(hour1) < Integer.parseInt(hour2) ? result - 1 : result);

答案 1 :(得分:0)

使用java.time:

public static void main(String[] args) {

    java.time.LocalTime a = java.time.LocalTime.parse("12:00:00");
    System.out.println(a.getHour());

}