【问题标题】:How to convert String yyyy-MM-ssThh-mm-ss to LocalDataTime yyyy-MM-ss hh-mm-ss?如何将字符串 yyyy-MM-ddThh-mm-ss 转换为 LocalDateTime yyyy-MM-dd hh-mm-ss?
【发布时间】:2020-05-10 07:20:38
【问题描述】:

如标题所示,我有一个问题。我需要将 LocalDataTime yyyy-MM-ssThh-mm-ss 解析为 LocalDataTime yyyy-MM-ss hh-mm-ss 但是当我这样做时

String beforeConversionStartDate = "2020-01-24T00:06:56";
 private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDataTime parsedDate = LocalDateTime.parse(beforeConversionStartDate,formatter);

那我的输出还是yyyy-MM-ddTHH:mm:ss

所以我的问题是如果解析器无法正常工作,如何从 LocalDataTime 中删除这个“T”?

【问题讨论】:

标签: java spring string spring-boot type-conversion


【解决方案1】:

您混淆了parseformat 方法。

  1. 首先,您希望 parse 您对 LocalDateTime 实例的输入
  2. 那么,你format这个实例根据你的格式化程序

    String beforeConversionStartDate = "2020-01-24T00:06:56";
    LocalDateTime parsedDate = LocalDateTime.parse(beforeConversionStartDate);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String formattedDate = parsedDate.format(formatter);
    

【讨论】:

  • 重点是parsedDate 没有固有格式。因此,如果您只是天真地尝试使用toString() 打印它,则将使用 default 格式来打印它。
【解决方案2】:

LocalDateTime (Java Platform SE 8 ) 这个函数

LocalDateTime.parse(CharSequence text, DateTimeFormatter formatter);

接受一个由格式化程序定义的模式格式化的字符串并返回一个 LocalDateTime 对象,但是返回的对象不知道使用了什么格式化程序。 因此,您必须在获得解析后的字符串后对其进行格式化:

    String str = "1986-04-08 12:30";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
    LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
    String newDateTime = formatter.format(dateTime);

【讨论】:

  • 重点是我的输入字符串是“1986-04-08T 12:30”,你可以看到日和小时之间有一个“T”字母,我需要删除这个 T然后在没有 T 的情况下解析到 LocalDataTime 里面有 T
猜你喜欢
  • 2019-02-17
  • 2018-11-08
  • 2013-07-22
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
相关资源
最近更新 更多