java - 在 Java 中将字符串转换为日期

标签 java

我在 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/

相关文章:

Java:如何删除 JFormattedTextField 中的空格?

java - 地理编码器不断返回 true

java - 二维数组中带有空格的字符串输入

java - Selenium org.openqa.selenium.WebDriver 无法访问

java - JSCH 在 Windows 机器上执行命令并获取输出

java - 同一 Eclipse 窗口中的多个类

java - 如何编译.class文件

java - JPA 转换器 (EclipseLink) 中的 CDI 注入(inject)类

java - RESTful Web 服务中的@POST

java - 如何在 Linux 中为所有用户设置 JAVA_HOME