0

我在Java中有以下字符串:

2011-12-21T20:27:32-08:00

谁能告诉我如何通过将其转换为日期来存储此字符串?

我需要将它存储在声明为时间戳的 MySQL 列中。

我尝试了以下方法,但它不起作用:

Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz").parse("2011-12-21T20:27:32-08:00");

它给出以下错误:

Exception in thread "main" java.text.ParseException: Unparseable date: "2011-12-21T20:27:32-08:00" –

任何帮助深表感谢。

4

2 回答 2

3

根据文档z期望时区指示符的格式与您的字符串中的格式不同,但您可以改用X它,它支持它们。所以(更改在格式字符串的末尾):

Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX").parse("2011-12-21T20:27:32-08:00");

文档

字母日期或时间组件演示示例
------ ------------ ----------- ----------------------------------
z 时区 一般时区 太平洋标准时间;太平洋标准时间; GMT-08:00
Z 时区 RFC 822 时区 -0800
X 时区 ISO 8601 时区 -08;-0800; -08:00

Daniel Kaplan在评论中指出这X似乎是新的。根据您的环境,您可能需要稍微预处理字符串以删除冒号并改用Z(大写,而不是z; 上面列表中的第二个)。

于 2013-01-09T01:59:47.967 回答
0

你应该看看这个问题:Java SimpleDateFormat for time zone with acol separator? . 第一个答案可能会有所帮助。

于 2013-01-09T03:08:34.787 回答