【发布时间】:2024-01-16 15:07:01
【问题描述】:
我正在尝试将 java 中的字符串日期值转换为日期并尝试将其存储在 mysql 表中。
下面的代码sn-p:
DateFormat dfm = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String string = "07/24/2013 17:57:52 UTC";
Date a = dfm.parse(string);
System.out.println(a);
我的问题是上面的代码总是返回以下控制台输出: 2013 年 7 月 24 日星期三 17:57:52 PDT
我不知道为什么时区会改变,当我试图将其放入数据库时,它会以“2013-07-24 17:57:52”格式存储它。我不确定为什么上面的代码会在 PDT 中返回我的时区?
你们能解释一下吗?我的意图是存储一个 UTC 日期,该日期将作为输入并将其存储到 MySQL 时间戳字段中。
提前致谢。
【问题讨论】:
-
请告诉我们您是如何将其存储在数据库中的。此外,您的输入是否 必须 结尾有“UTC”,还是可以删除? (我们不知道您的输入来自哪里。)其余大部分都很容易修复......
-
什么是mysql的时区设置?使用它来检查:*.com/a/930914/791406
-
@JonSkeet 感谢您的回复。我可以以编程方式删除 UTC。但这将如何提供帮助。从 String 变量中删除 UTC 仍然显示与上面相同。我也在使用 JPA 来保存数据。 "testdate testobj = new testdate(); testobj.setAddDate(new Timestamp(a.getTime())); em.persist(testobj);"
-
@raffian 也感谢您的回复..我知道我可以在 mysql 中设置默认时区。但是有什么方法可以让我们跳过它并以编程方式做一些事情。
-
java.util日期时间 API 及其格式化 APISimpleDateFormat已过时且容易出错。建议完全停止使用它们并切换到modern Date-Time API。查看this answer 和this answer 了解如何将java.timeAPI 与JDBC 结合使用。
标签: java mysql date timezone timestamp