栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

不要将日期作为字符串传递给MySQL数据库。更好,更容易,更安全地传递日期对象。一方面,它可以减轻格式设置和任何格式设置问题。最好通过,从

java.time
现代Java日期和时间API
传递类的实例。在你的情况下,一个
LocalDateTime
会做。

    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);    PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)");    ps.setObject(1, ldt);

LocalDateTime
得到的是:

2018-05-23T15:30

我简化了从纪元字符串的转换。使用基本的小写字母

long
而不是
Long
对象。我使用您的时区Asia /
Calcutta,假设您的数据库值在该时区中。通常的建议是将数据库值保留为UTC,至少在有可能在您所在时区之外使用数据的情况下。如果需要此,请使用此转换,而不是上面的转换:

    LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();

链接: Oracle教程:Date
Time
说明如何使用

java.time



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号