【问题标题】:Convert String to DateTime object in specific format(ex. without Date)以特定格式将字符串转换为 DateTime 对象(例如,没有日期)
【发布时间】:2020-07-21 17:19:29
【问题描述】:

我需要将我的String 转换为没有日期的时间。我使用 SimpleDateFormat 并且它有效。但我需要的是来自 java 中的 Localdatetime

String str = "10:30:20 PM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);

但它给了我这个错误:

线程“main”java.time.format.DateTimeParseException 中的异常:无法解析文本“10:30:20 PM”:无法从 TemporalAccessor 获取 LocalDateTime:{},ISO 解析为 22:30:20输入 java.time.format.Parsed

【问题讨论】:

标签: java datetime time localdate


【解决方案1】:

您需要的是 LocalTime 而不是 LocalDateTime。 你也可以试试这个:

LocalTime localTime = LocalTime.parse("10:45:30 PM", DateTimeFormatter.ofPattern("hh:mm:ss a"));
System.out.println(localTime);

如果您有 24 小时制的时间:

LocalTime localTime = LocalTime.parse("22:45:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(localTime);

【讨论】:

    【解决方案2】:

    你可以使用Locale 和你的DateTimeFormatter -

    String str = "10:30:20 PM";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ss a",Locale.ENGLISH);
    LocalTime time = LocalTime.parse(str, formatter);
    System.out.println(time);
    

    还要注意你必须在这里使用LocalTime.parse(),因为你在日期中的字符串不包含日期部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2021-06-10
      • 2014-09-12
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多