【问题标题】:DateTimeParseException; Text '2018-10-18 00:00:00' could not be parsed at index 4 [duplicate]日期时间解析异常;无法在索引 4 处解析文本“2018-10-18 00:00:00”[重复]
【发布时间】:2019-02-17 07:59:34
【问题描述】:

我很难找到解析日期的正确方法。

我收到以下格式的字符串形式的日期:'2018-10-18 00:00:00'

我需要将其转换为 18/10/2018 并存储在变量 startDate 中

然后我需要一个新变量来保存 endDate 变量,以便将日期向前滚动一周。

我的代码:

public String getStartDate(String startDate){

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    LocalDate localStartDate = LocalDate.parse(startDate, formatter);

    String startDateFormatted = localStartDate.format(formatter);

    return startDateFormatted;
}

public LocalDate getEndDate(String startDate) {
    LocalDate localEndDate = LocalDate.parse(getStartDate(startDate)).plusDays(7);
    return localEndDate;
}

我的错误是:

java.time.format.DateTimeParseException: Text '2018-10-18 00:00:00' could 
not be parsed at index 4

索引 4 建议使用“-”字符。不确定用于删除原始字符串中的 ISO 时间格式的格式化程序模式

我现在正在阅读 Javadocs,但谁能告诉我如何解决?

【问题讨论】:

  • 首先您需要使用正确的格式化程序对其进行解析,然后将其格式化为您想要的最终格式。

标签: java date localdate


【解决方案1】:

您的输入格式错误。试试这个:

public String getStartDate(String startDate)
{
    DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    return LocalDate.parse(startDate, inputFormat).format(outputFormat);
}

【讨论】:

  • 那个你@dustytrash,现在你指出来似乎很明显,但我已经接受了第一个答案。
  • @Steerpike 但我的回答比他早 2 分 29 秒!开个玩笑就好了很高兴你成功了!
  • 更好。不过,您需要大写 HH 来表示一天中从 00 到 23 的时间。小写的hh 是在上午或下午(01-12)内的小时,如果没有上午/下午标记将无法工作,也不会接受提问者字符串中的00
  • @OleV.V.提问者输入的字符串是2018-10-18 00:00:00
  • 是的,没错,这就是我的意思。 :-) 该字符串中的小时数是00,不能用小写的hh 解析。
【解决方案2】:

您需要 两个 格式化程序。一个用于输入,一个用于输出:

public String getStartDate(String startDate) {
    DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    LocalDate localStartDate = LocalDate.parse(startDate, inputFormatter);
    String startDateFormatted = localStartDate.format(outputFormatter);
    return startDateFormatted;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多