首页 > 数据库 > mysql教程 > 将 UNIX 时间戳转换为日期时,为什么 SimpleDateFormat.parse 的输出与指定的不同?

将 UNIX 时间戳转换为日期时,为什么 SimpleDateFormat.parse 的输出与指定的不同?

Linda Hamilton
发布: 2024-10-30 03:06:28
原创
504 人浏览过

Why does SimpleDateFormat.parse output differently than specified when converting UNIX timestamps to dates?

SimpleDateFormatter.parse 输出与指定的不同

使用 SimpleDateFormat 将 UNIX 时间戳转换为日期时,您可能会遇到指定格式与指定格式之间的差异输出。

在给定的示例中,目标是将 UNIX 时间戳(“a1527069600”)转换为“dd/MM/yyyy hh:mm:ss a”格式的日期。但是,使用 SimpleDateFormatter.format 后跟 SimpleDateFormatter.parse 会产生不同的输出。

差异原因

出现差异是因为 SimpleDateFormatter.parse 期望字符串的格式与实例化期间指定的格式(“dd/MM/yyyy hh:mm:ss a”)。在这种情况下,SimpleDateFormatter.format 输出的日期格式与预期的输入格式不同,导致解析操作失败。

解决方案

避免此问题,建议不要将日期字符串传递给 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();

System.out.println(ldt.toString()); // Output: 2018-05-23T15:30

PreparedStatement ps = myDatabaseConnection.prepareStatement(
        "insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);</code>
登录后复制

此代码转换 UNIX时间戳转换为 LocalDateTime,可以直接插入 MySQL 数据库。

结论:

通过利用 java.time 并将日期对象而不是字符串传递给 MySQL,您可以消除格式问题并确保日期转换的准确性。

以上是将 UNIX 时间戳转换为日期时,为什么 SimpleDateFormat.parse 的输出与指定的不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板