格式化时间hh:mm:ss [英] Parse time of format hh:mm:ss

查看:393
本文介绍了格式化时间hh:mm:ss的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I parse a time of format hh:mm:ss , inputted as a string to obtain only the integer values (ignoring the colons) in java?

推荐答案

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

As per Basil Bourque's comment, this is the updated answer for this question, taking into account the new API of Java 8:

    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的问题的时刻不包含任何关于时区的信息,答案使用了DateXXX版本的日期/时间类(LocalTime,LocalDateTime)。如果需要解析的时间字符串也包含时区信息,那么 ZonedDateTime

  • since the OP's question contains a concrete example of a time instant containing only hours, minutes and seconds (no day, month, etc.), the answer above only uses LocalTime. If wanting to parse a string that also contains days, month, etc. then LocalDateTime would be required. Its usage is pretty much analogous to that of LocalTime.
  • since the time instant int OP's question doesn't contain any information about timezone, the answer uses the LocalXXX version of the date/time classes (LocalTime, LocalDateTime). If the time string that needs to be parsed also contains timezone information, then ZonedDateTime needs to be used.

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

====== Below is the old (original) answer for this question, using pre-Java8 API: =====

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

I'm sorry if I'm gonna upset anyone with this, but I'm actually gonna answer the question. The Java API's are pretty huge, I think it's normal that someone might miss one now and then.

SimpleDateFormat可能会在这里做到这一点:

A SimpleDateFormat might do the trick here:

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小时格式等)。查看链接中的文档以获取有关此内容的详细信息

  • the pattern you pass to SimpleDateFormat might be different then the one in my example depending on what values you have (are the hours in 12 hours format or in 24 hours format, etc). Look at the documentation in the link for details on this

从String中创建Date对象(通过SimpleDateFormat)后,不要试图使用Date.getHour(),Date.getMinute()等。它们似乎有时会起作用,但总体而言它们可能会产生不良结果,因此现在已弃用。请使用日历,如上例所示。

Once you create a Date object out of your String (via SimpleDateFormat), don't be tempted to use Date.getHour(), Date.getMinute() etc. They might appear to work at times, but overall they can give bad results, and as such are now deprecated. Use the calendar instead as in the example above.

这篇关于格式化时间hh:mm:ss的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆