我在 Java 中有以下字符串:
2011-12-21T20:27:32-08:00
谁能告诉我如何通过将其转换为日期来存储该字符串?
我需要将其存储在声明为 TimeStamp 的 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" –
非常感谢任何帮助。
最佳答案
根据the documentation , z
期望时区指示器的格式与字符串中的格式不同,但您可以使用支持它们的 X
来代替。所以(更改位于格式字符串的末尾):
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX").parse("2011-12-21T20:27:32-08:00");
来自the docs :
Letter Date or Time Component Presentation Examples ------ ----------------------- ------------------- ------------------------------------- z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800 X Time zone ISO 8601 time zone -08; -0800; -08:00<小时/>
Daniel Kaplan在评论中指出 X
似乎是新的。您可能需要对字符串进行一些预处理以删除冒号并使用 Z
(大写,而不是 z
;上面列表中的第二个),具体取决于您的环境。
关于java - 在 Java 中将字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227119/