格式化时间hh:mm:ss

时间:2012-08-16 20:13:37

标签: java date string-parsing

如何解析格式hh:mm:ss的时间,以字符串形式输入以获取java中的整数值(忽略冒号)?

5 个答案:

答案 0 :(得分:73)

根据Basil Bourque的评论,考虑到Java 8的新API,这是这个问题的更新答案:

    String myDateString = "13:24:40";
    LocalTime localTime = LocalTime.parse(myDateString, DateTimeFormatter.ofPattern("HH:mm:ss"));
    int hour = localTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
    int minute = localTime.get(ChronoField.MINUTE_OF_HOUR);
    int second = localTime.get(ChronoField.SECOND_OF_MINUTE);

    //prints "hour: 13, minute: 24, second: 40":
    System.out.println(String.format("hour: %d, minute: %d, second: %d", hour, minute, second));

说明:

  • 由于OP的问题包含一个仅包含小时,分钟和秒(没有日,月等)的时间瞬间的具体示例,上面的答案仅使用LocalTime。如果想要解析也包含日,月等的字符串,则需要LocalDateTime。它的用法非常类似于LocalTime。
  • 由于OP的问题的时刻不包含任何有关时区的信息,答案使用LocalXXX版本的日期/时间类(LocalTime,LocalDateTime)。如果需要解析的时间字符串也包含时区信息,则需要使用ZonedDateTime

======以下是此问题的旧(原始)答案,使用pre-Java8 API:=====

我很抱歉,如果我要打扰任何人,但我真的会回答这个问题。 Java API非常庞大,我认为有人可能会偶尔错过一个。

SimpleDateFormat可以在这里解决问题:

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

应该是这样的:

String myDateString = "13:24:40";
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//the above commented line was changed to the one below, as per Grodriguez's pertinent comment:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(myDateString);

Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
int hour = calendar.get(Calendar.HOUR);
int minute; /... similar methods for minutes and seconds

你应该知道的问题:

  • 传递给SimpleDateFormat的模式可能与我示例中的模式不同,具体取决于您拥有的值(12小时格式或24小时格式的小时数等)。请查看链接中的文档以获取有关此

  • 的详细信息
  • 从String中创建一个Date对象(通过SimpleDateFormat),不要试图使用Date.getHour(),Date.getMinute()等。它们似乎有时会起作用,但是总的来说,他们可以给出不好的结果,因此现在已经弃用了。请使用日历,如上例所示。

答案 1 :(得分:10)

有点冗长,但这是在Java中解析和格式化日期的standard方法:

DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
try {
  Date dt = formatter.parse("08:19:12");
  Calendar cal = Calendar.getInstance();
  cal.setTime(dt);
  int hour = cal.get(Calendar.HOUR);
  int minute = cal.get(Calendar.MINUTE);
  int second = cal.get(Calendar.SECOND);
} catch (ParseException e) {
  // This can happen if you are trying to parse an invalid date, e.g., 25:19:12.
  // Here, you should log the error and decide what to do next
  e.printStackTrace();
}

答案 2 :(得分:4)

String time = "12:32:22";
String[] values = time.split(":");

这将占用您的时间并将其拆分到看到冒号的位置并将值放在数组中,因此在此之后您应该有3个值。

然后遍历字符串数组并转换每一个。 (使用Integer.parseInt

答案 3 :(得分:1)

如果您想提取小时,分钟和秒,请尝试以下方法:

String inputDate = "12:00:00";
String[] split = inputDate.split(":");
int hours = Integer.valueOf(split[0]);
int minutes = Integer.valueOf(split[1]);
int seconds = Integer.valueOf(split[2]);

答案 4 :(得分:-3)

你可以使用方法toCharArray()返回数据,如:array(“1”,“2”,“:”,“0”,“1”,“:”,“0”,“0”)< - 这些是java中的char 或者你可以将字符串转换为Date + try catch =>然后得到小时,分钟和秒