首页  >  文章  >  数据库  >  为什么 SimpleDateFormat.parse 返回的格式与指定的格式不同?

为什么 SimpleDateFormat.parse 返回的格式与指定的格式不同?

Susan Sarandon
Susan Sarandon原创
2024-10-27 16:10:02910浏览

 Why Does SimpleDateFormat.parse Return a Different Format Than Specified?

SimpleDateFormatter.parse 给出与指定格式不同的输出

尝试将 UNIX 时间戳转换为具有特定格式的日期时会出现此问题使用 SimpleDateFormat 进行格式化。尽管设置了所需的格式,sdf.parse 结果仍以不同的格式显示。

解决方案:

要解决此问题,建议避免将日期传递为字符串到 MySQL 数据库。相反,传递日期对象更安全、更简洁,尤其是来自 Java 日期和时间 API (java.time) 的实例。 LocalDateTime 对象适合这种情况:

<code class="java">String ep = "a1527069600";
long epoch = Long.parseLong(ep.substring(1));
Instant inst = Instant.ofEpochSecond(epoch);
LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();</code>

对于数据库存储,LocalDateTime 表示格式为“2018-05-23T15:30”的日期时间。

将 LocalDateTime 持久保存在MySQL 数据库:

<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement(
                "insert into my_table (my_date_time) values (?)");
    ps.setObject(1, ldt);</code>

UTC 值的替代:

如果数据库值应以 UTC(协调世界时)存储,请使用以下转换:

<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>

使用 java.time 的优点:

  • 消除格式问题
  • 提供现代且全面的日期和时间 API

以上是为什么 SimpleDateFormat.parse 返回的格式与指定的格式不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn