繁体   English   中英

如何将给定时间(字符串)转换为LocalTime?

[英]How to convert a given time (String) to a LocalTime?

我将要求用户输入特定的时间:10 AM、12:30PM、2:47PM、1:09AM、5PM,等等。我将使用Scanner来获取用户的输入。

如何将String解析/转换为LocalTime对象? Java中是否有任何内置函数可以使我做到这一点?

只需使用java.time.format.DateTimeFormatter

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

解释模式:

  • h :一天中的上午/下午(从1到12),用1或2位数字
  • [] :可选部分的定界符(其中的所有内容都是可选的)
  • :mm :a :字符,后跟2位数字的分钟
  • a :AM / PM的代号

这适用于所有输入。

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

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

希望这会帮助你。 我认为您可以使用DateTimeFormatterLocalDateTime解析来做到这一点,如下例所示。

    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 PM

类似的帖子将是Java 8-尝试将String转换为LocalDateTime

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM