Java 使用SimpleDataFormat将特定字符串转换为日期

Java 使用SimpleDataFormat将特定字符串转换为日期,java,simpledateformat,datetime-parsing,Java,Simpledateformat,Datetime Parsing,我有一个字符串要转换为javaDate对象: “2017年6月12日星期一21:00:15 GMT+0200(欧洲西部夏季时间)” 我要做的第一件事是在第一个“(”之前拆分字符串,然后删除任何尾随空格,这样我就剩下: “2017年6月12日星期一21:00:15 GMT+0200” 现在,我正试图使用以下模式解析它: “E M d y H:M:s'GMT'Z” 不幸的是,这不起作用。我尝试了一些变体,但没有任何效果。甚至可以将特定字符串转换为日期吗?您使用的模式不正确。如果您有一周中一天的缩写,

我有一个字符串要转换为java
Date
对象:
“2017年6月12日星期一21:00:15 GMT+0200(欧洲西部夏季时间)”

我要做的第一件事是在第一个“(”之前拆分字符串,然后删除任何尾随空格,这样我就剩下:
“2017年6月12日星期一21:00:15 GMT+0200”

现在,我正试图使用以下模式解析它:
“E M d y H:M:s'GMT'Z”


不幸的是,这不起作用。我尝试了一些变体,但没有任何效果。甚至可以将特定字符串转换为日期吗?

您使用的模式不正确。如果您有一周中一天的缩写,长度为3个字母,则应使用
EEE
,依此类推


请尝试使用
“EEE MMM dd yyyy HH:mm:ss'GMT'z”

您使用的模式不正确。如果您有一周中一天的缩写,长度为3个字母,则应使用
EEE
,依此类推


请尝试“EEE MMM dd yyyy HH:mm:ss'GMT'z”

Victor,您的语句结尾不正确。您仍然应该在模式中添加'GMT':EEE-MMM-dd-yyyy HH:mm:ss'GMT'ZThanks很多!这在我使用的文档中不是很清楚。Victor,您的语句结尾不正确。您仍然应该在模式中添加'GMT':ee-MMM-dd-yyyyy HH:mm:ss'GMT'ZThanks很多!这在我使用的文档中并不十分清楚。顺便说一句,您仍然在使用过时的
SimpleDateFormat
Date
类?有什么原因吗?我建议
OffsetDateTime.parse(“Mon Jun 12 2017 21:00:15 GMT+0200”,DateTimeFormatter.of模式(“eemmm d uu HH:mm:ss'GMT'XX”,Locale.ENGLISH))
。现代日期和时间类使用起来非常方便(格式模式字母大致相同)。PS我曾希望将所有
GMT+0200
与模式
ooooo
(大写字母O)匹配,但它不起作用。它似乎需要一个冒号:
GMT+02:00
。这可能是Java 8中的一个错误,如果是,它可能在Java 9中得到修复。@OleV.V.我使用
Date
类,因为我在一个对象中有时间和日期,这使得使用数据库类型DATETIME很容易持久化到MySQL数据库。我使用SDF是因为这是一个l当我寻找将字符串转换为时态对象的方法时,我遇到了一个难题。在这种情况下,现代类将使用什么?我从2011年左右就没有使用过MySQL。我似乎了解到,使用Connector/J 5.1或更高版本,您可以直接在数据库中存储和检索更新的类。存储一个
即时
,这是正确的响应老式的
Date
类。我在第一篇评论中使用的
OffsetDateTime
类有一个
toInstant
方法,可以按照名称进行操作。请搜索您的文档和网络以获取详细信息。另外,您仍在使用过时的
SimpleDateFormat
Date
类?一个原因是什么?我建议
OffsetDateTime.parse(“Mon Jun 12 2017 21:00:15 GMT+0200”,DateTimeFormatter.of模式(“EEE MMM d uuu HH:mm:ss'GMT'XX”,Locale.ENGLISH”)
。现代日期和时间类使用起来非常方便(格式模式字母大致相同).PS我曾希望将所有的
GMT+0200
与模式
OOOO
(大写字母O)匹配,但它不起作用。它似乎需要一个冒号:
GMT+02:00
。这可能是Java 8中的一个错误,如果是,它可能在Java 9中得到修复。@OleV.V.我使用
Date
类,因为我在一个对象中有时间和日期,这使得使用数据库类型DATETIME很容易持久化到MySQL数据库。我使用SDF是因为这是一个l当我寻找将字符串转换为时态对象的方法时,我遇到了一个难题。在这种情况下,现代类将使用什么?我从2011年左右就没有使用过MySQL。我似乎了解到,使用Connector/J 5.1或更高版本,您可以直接在数据库中存储和检索更新的类。存储一个
即时
,这是正确的响应老式的
Date
类。我第一次评论中使用的
OffsetDateTime
类有一个
toInstant
方法,该方法按照名称执行。请搜索您的文档和网络以获取详细信息。