Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SimpleDataFormat在Java中进行日期解析_Java_Date_Datetime_Time_Simpledateformat - Fatal编程技术网

使用SimpleDataFormat在Java中进行日期解析

使用SimpleDataFormat在Java中进行日期解析,java,date,datetime,time,simpledateformat,Java,Date,Datetime,Time,Simpledateformat,我想将以下格式的日期解析为日期:“Wed Aug 26 2020 11:26:46 GMT+0200”。但我不知道怎么做。我试过这个: SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss z"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date date = parser.

我想将以下格式的日期解析为日期:“Wed Aug 26 2020 11:26:46 GMT+0200”。但我不知道怎么做。我试过这个:

SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss z");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = parser.parse(split[0]); //error line
String formattedDate = formatter.format(date);

我得到了这个错误:不可解析的日期:“Wed Aug 26 2020 11:26:46 GMT+0200”。我的约会格式错了吗?如果是这样,有人能给我指出正确的方向吗?

我建议您停止使用过时且容易出错的
java.util
日期时间API和
SimpleDataFormat
。切换到
java.time
date-time API和相应的格式化API(
java.time.format
)。从了解有关现代日期时间API的更多信息

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        // Given date-time string
        String dateTimeStr = "Wed Aug 26 2020 11:26:46 GMT+0200";

        // Parse the given date-time string to OffsetDateTime
        OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr,
                DateTimeFormatter.ofPattern("E MMM d u H:m:s zX", Locale.ENGLISH));

        // Display OffsetDateTime
        System.out.println(odt);
    }
}
输出:

2020-08-26T11:26:46+02:00
Wed Aug 26 10:26:46 BST 2020
使用传统API: 输出:

2020-08-26T11:26:46+02:00
Wed Aug 26 10:26:46 BST 2020

您使用的系统的语言环境设置不是英语吗?因为如果您不提供SimpleDataFormat语言环境,它将获取并使用您的系统默认语言环境,该语言环境可能不是英语,因此无法解析英语工作日名称。尝试使用新的SimpleDataFormat(“EEE-MMM-dd-yyy-HH:mm:ss-z”,Locale.ROOT)或
Locale.ENGLISH
并查看错误是否持续我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用
OffsetDateTime
DateTimeFormatter
,两者都来自。