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

2022-08-31 08:55:44

如何将下面的日期字符串解析为对象?Date

String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("E MM dd kk:mm:ss z yyyy");
Date result =  df.parse(target);  

引发异常...

java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000"
        at java.text.DateFormat.parse(DateFormat.java:337)

答案 1

模式是错误的。您有一个 3 个字母的日缩写,因此它必须是 。您有一个 3 个字母的月份缩写,因此它必须是 。由于这些日和月缩写对区域设置敏感,因此您还希望将区域设置显式指定为英语,否则它将使用平台默认区域设置,该区域设置本身可能不是英语。EEEMMMSimpleDateFormat

public static void main(String[] args) throws Exception {
    String target = "Thu Sep 28 20:29:30 JST 2000";
    DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
    Date result =  df.parse(target);  
    System.out.println(result);
}

这打印在这里

Thu Sep 28 07:29:30 BOT 2000

根据我的时区,这是正确的。

如果您不想使用而不是.,我也会重新考虑。阅读 javadoc 以获取有关有效模式的详细信息。HHkk


答案 2

下面是一个工作示例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Date;

public class j4496359 {
    public static void main(String[] args) {
        try {
            String target = "Thu Sep 28 20:29:30 JST 2000";
            DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss zzz yyyy");
            Date result =  df.parse(target);
            System.out.println(result); 
        } catch (ParseException pe) {
            pe.printStackTrace();
        }
    }
}

将打印:

Thu Sep 28 13:29:30 CEST 2000