问题描述
我有一个动态填充的日期字段,我需要该字段的格式为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"));