【问题标题】:How to convert a given time (String) to a LocalTime?如何将给定时间(字符串)转换为 LocalTime?
【发布时间】:2018-01-17 14:36:10
【问题描述】:

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

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

【问题讨论】:

  • 那不是LocalDateTime,那只是LocalTime
  • 我很抱歉。让我重新表述一下。

标签: java java-time datetime-parsing


【解决方案1】:

只需使用java.time.format.DateTimeFormatter

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

解释模式:

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

这适用于您的所有输入。

【讨论】:

  • 奥布里加多雨果。希望我和你一样聪明。祝你有美好的一天
【解决方案2】:

如果你只想解析时间,你应该尝试解析到LocalTime。下面是实现这个的代码:

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

【讨论】:

  • 这仅适用于完全遵循 hh:mma 格式的时间,例如 12:30AM,但不适用于 5AM 或 2:12PM...
【解决方案3】:

希望这会对您有所帮助。我认为您可以使用 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

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

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2012-10-03
    相关资源
    最近更新 更多