【问题标题】:Parse Date using DateTimeFormatter with extra chars使用带有额外字符的 DateTimeFormatter 解析日期
【发布时间】:2020-04-24 08:46:39
【问题描述】:

如何使用带有额外字符的 DateTimeFormatter 解析字符串日期..

示例:“我的生日是 2001-01-01 10:14:14”

【问题讨论】:

标签: java parsing date


【解决方案1】:

您可以使用此模式解析您的字符串:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
        "'My birthday is' uuuu-MM-dd HH:mm:ss"
);
LocalDateTime ldt = LocalDateTime.parse(str, formatter);

输出

2001-01-01T10:14:14

如果你的字符串发生了变化,那么你应该使用例如正则表达式提取日期时间部分,然后解析结果,例如:

String newStr = str.replaceFirst(".*?(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}).*?", "$1");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
        "uuuu-MM-dd HH:mm:ss"
);
LocalDateTime ldt = LocalDateTime.parse(newStr, formatter);
System.out.println(ldt);

【讨论】:

  • 太棒了..它的工作..这是什么意思:".*?(\\d{4}-\\d{2}-\\d{2} \\d{2 }:\\d{2}:\\d{2}).*?"
  • @Develofer 这是一个从你的字符串中提取日期时间部分的正则表达式,你可以看看这个.*?(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多