【发布时间】:2017-06-12 22:01:04
【问题描述】:
我有这个字符串,我想将其转换为 java Date 对象:"Mon Jun 12 2017 21:00:15 GMT+0200 (W. Europe Summer Time)"
我要做的第一件事是在第一个 '(' 之前拆分字符串,然后删除所有尾随空格,这样我就剩下:"Mon Jun 12 2017 21:00:15 GMT+0200"
现在我正在尝试使用以下SimpleDateFormat 模式解析它:"E M d y H:m:s 'GMT'Z"
很遗憾,这行不通。我尝试了一些变化,但没有任何效果。是否可以将该特定字符串转换为日期?
【问题讨论】:
-
顺便说一句,您还在使用过时的
SimpleDateFormat和Date类吗?任何原因?我建议OffsetDateTime.parse("Mon Jun 12 2017 21:00:15 GMT+0200", DateTimeFormatter.ofPattern("EEE MMM d uuuu 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,因为这就是我在寻找将字符串转换为时间对象的方法时遇到的所有问题。在这种情况下使用什么现代类? -
我从 2011 年左右就没有使用过 MySQL。我似乎在使用 Connector/J 5.1 或更高版本时读到过,您可以直接在数据库中存储和检索较新的类。存储一个
Instant,它对应于老式的Date类。在我的第一条评论中使用的OffsetDateTime类有一个toInstant方法,它的功能与名称相同。请搜索您的文档和网络以获取详细信息。
标签: java simpledateformat datetime-parsing