使用SimpleDataFormat在Java中进行日期解析
我想将以下格式的日期解析为日期:“Wed Aug 26 2020 11:26:46 GMT+0200”。但我不知道怎么做。我试过这个:使用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.
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
,两者都来自。