如何将给定时间(String)转换为LocalTime?

时间:2017-08-09 15:41:44

标签: java java-time datetime-parsing

我将要求用户输入特定时间:上午10点,下午12点30分,下午2点47分,上午1:09点,下午5点等。 我将使用Scanner来获取用户的输入。

如何解析/转换StringLocalTime个对象? Java中是否有任何内置函数可以让我这样做?

3 个答案:

答案 0 :(得分:4)

只需使用java.time.format.DateTimeFormatter

DateTimeFormatter parser = DateTimeFormatter.ofPattern("h[:mm]a");
LocalTime localTime = LocalTime.parse("10AM", parser);

解释模式:

  • h:上午/下午1点(从1到12),有1位或2位
  • []:可选部分的分隔符(其中的所有内容都是可选的)
  • :mm:一个:字符,后跟两位数的分钟
  • a:AM / PM的指示符

这适用于您的所有输入。

答案 1 :(得分:1)

如果您只想解析时间,则应尝试解析为LocalTime。以下是实现此目的的代码:

DateTimeFormatter parseFormat = new DateTimeFormatterBuilder().appendPattern("hh[:mm]a").toFormatter();
LocalTime localTime = LocalTime.parse(timeValue, parseFormat);

答案 2 :(得分:0)

希望这会对你有所帮助。我认为您可以使用 DateTimeFormatter LocalDateTime 进行解析,如下例所示。

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMM d, yyyy HH:mm:ss a");

    String date = "Tuesday, Aug 13, 2017 12:10:56 PM";
    LocalDateTime localDateTime = LocalDateTime.parse(date,  formatter);
    System.out.println(localDateTime);
    System.out.println(formatter.format(localDateTime));

输出

2017-08-13T12:10:56

2017年8月13日星期二下午12:10:56

类似的帖子是Java 8 - Trying to convert String to LocalDateTime