解析不可分析的日期字符串
解析不可分析的日期字符串
我有一个日期时间字符串,如下所示:\nJava代码:\n
String datetimeString = "Tue Apr 10 15:19:06 CEST 2018";
\n我想将其转换为日期,格式如下:2018-04-10\n我应该如何做?\n我尝试了以下代码:\n
Date result; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); result = formatter.parse(datetimeString);
\n但是我得到了\"Unparseable date\"(无法解析的日期)的错误提示。
(Unparseable date from string)这个问题的出现原因是日期字符串的格式与指定的格式不匹配。在给定的代码中,datetimeString的格式为"Tue Apr 10 15:19:06 CEST 2018",而from_format的格式为"E MMM dd HH:mm:ss z yyyy"。由于日期字符串的格式与指定的格式不一致,因此在执行LocalDateTime.parse方法时会抛出Unparseable date异常。
要解决这个问题,可以通过两种方法来修复日期字符串的格式与指定的格式之间的不匹配。一种方法是修改datetimeString的格式,使其与from_format一致。另一种方法是修改from_format的格式,使其与datetimeString一致。
以下是修复日期字符串格式的示例代码:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateTest { public static void main(String[] args) throws Exception { String datetimeString = "Tue Apr 10 15:19:06 CEST 2018"; String from_format = "E MMM dd HH:mm:ss z yyyy"; String to_format = "yyyy-MM-dd"; DateTimeFormatter from_formatter = DateTimeFormatter.ofPattern(from_format); DateTimeFormatter to_formatter = DateTimeFormatter.ofPattern(to_format); LocalDateTime ldt = LocalDateTime.parse(datetimeString, from_formatter); System.out.println(ldt.format(to_formatter)); } }
在修复后的代码中,datetimeString的格式与from_format的格式一致,因此不会再出现Unparseable date异常。
另外需要注意的是,在使用DateTimeFormatter类时,需要理解格式符号和展示描述以正确计算符号的数量。此外,由于LocalDate.toString()方法保证以指定的格式返回字符串,所以to_formatter实际上是不必要的。
通过修复日期字符串的格式与指定的格式之间的不匹配,可以解决(Unparseable date from string)这个问题。