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 的优点:
以上是为什么 SimpleDateFormat.parse 返回的格式与指定的格式不同?的详细内容。更多信息请关注PHP中文网其他相关文章!