如何将字符串解析为 Java 日期?

How to parse a string into a Java Date?

如何将 "Fri Feb 14 09:58:21 EST 2020" 之类的字符串解析为 Java 中的日期?

我能找到的最接近的例子是:

SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";

try {

    Date date = formatter.parse(dateInString);
    System.out.println(date);
    System.out.println(formatter.format(date));

}
catch (ParseException e) {
    e.printStackTrace();
}

但是它没有“ EST ”部分,正确的做法是什么?

你的模式不正确,问题很多:

  • EEEE 替换为 EEE
  • , 删除这个因为你的字符串没有逗号
  • , 第二个逗号也是一样
  • 替换yyyy的位置放在最后
  • a 删除,因为它根本没有被使用,而是使用 z 来匹配 ETC

如果您使用 java-time,您可以使用此模式 EEE MMM dd HH:mm:ss z yyyy :

解析您的日期
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
        "EEE MMM dd HH:mm:ss z yyyy", 
        Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(str, formatter);