如何在Java中将任何Datetime格式解析为yyyy-MM-dd

问题描述

我有一个动态填充的日期字段,我需要该字段的格式为yyyy-MM-dd

对于格式为1994-08-01 14:37:44的输入日期,这将导致异常

java.time.format.DateTimeParseException: Text '1994-08-01 14:37:44' could not be parsed,unparsed text found at index 10

这是我尝试过LocalDateTime.parse("1994-08-01 14:37:44",DateTimeFormatter.ofPattern(yyyy-MM-dd));

的许多其他方式之一

是否可以将所有日期/日期时间转换为yyyy-MM-dd格式?

请帮助

谢谢

解决方法

像这样尝试。您可以提取LocalDate部分。

LocalDate ldt = LocalDateTime.parse("1994-08-01 14:37:44",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        
System.out.println(ldt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

打印

1994-08-01
,

您具有日期和时间部分,但是您仅使用日期格式将其解析为LocalDateTime值,这将失败,因为LocalDateTime需要时间部分才能正常工作>

首先解析全文

String input = "1994-08-01 14:37:44";
LocalDateTime ldt = LocalDateTime.parse(input,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

然后使用DateTimeFormatter对其进行格式化

String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(ldt);
System.out.println(formatted);

可打印

1994-08-01

根据您的需要,您还可以将LocalDateTime的值转换为LocalDate并对其进行格式化,结果是相同的,但是您可能还需要LocalDate做其他事情,谁知道...

String formatted = ldt.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...