我该如何在Java中解析格式为 hh:mm:ss
的时间字符串,并仅获取整数值(忽略冒号)?
我该如何在Java中解析格式为 hh:mm:ss
的时间字符串,并仅获取整数值(忽略冒号)?
根据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));
备注:
====== 以下是对这个问题的旧的(原始的)回答,使用 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小时制等)。请查看链接中的文档以获取详细信息。
一旦通过 SimpleDateFormat 将字符串创建为 Date 对象后,不要试图使用 Date.getHour()、Date.getMinute() 等方法。它们在某些时候可能有效,但总体上可能会给出错误的结果,并因此被弃用。像上面的示例一样使用日历。
LocalTime lt = LocalTime.parse("14:23:57");
。 - Asanka Siriwardena有点啰嗦,但这是在Java中解析和格式化日期的标准方法:
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();
}
String time = "12:32:22";
String[] values = time.split(":");
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]);
java.text.SimpleDateFormat
是一个用于格式化和解析日期时间的类。它允许您将日期时间对象转换为您需要的字符串表示形式,并将字符串表示形式转换回日期时间对象。该类使用指定的日期格式模式来创建格式化程序或解析器。您可以使用不同的日期格式模式来创建不同类型的日期格式,例如“yyyy-MM-dd”或“HH:mm:ss”。 - Sebastian Paaske Tørholm