Jos*_* L. 6 java mysql time timestamp
如何将Localdatetime转换为时间戳?我想使用新的SE 8 date api,因为它比使用日期和日历更好.我计划在整个程序中使用localdatetime,然后将该日期放入mysql数据库.我找了一个答案但是java.time似乎没有很多问题和答案.这是我正在测试的一些代码.这是我得到的.
LocalDateTime c = LocalDateTime.now();
java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.getLong());
Run Code Online (Sandbox Code Playgroud)
我想我需要把它转换成一个很长的,但我不知道如何.api允许转换单个元素,如月和日,但不是整个日期.由于我已经在这里,你如何从时间戳转换回来?我应该只使用jodatime吗?
我试过这个:
LocalDateTime c = LocalDateTime.now();
ZoneId zoneId = ZoneId.systemDefault();
System.out.println("this:" + c);
java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.atZone(zoneId).toEpochSecond());
pst.setTimestamp(2, javaSqlDate);
Run Code Online (Sandbox Code Playgroud)
这仅保存1970年左右的日期.system.print正确打印当前日期.我希望它保存当前日期.
首先,您应该决定是否真的要使用 LocalDateTime。以下是关于差异的一些解释,摘自此处:
<...> LocalDateTime 不像 Instant 那样是时间线上的一个点,LocalDateTime 只是人们在便条上书写的日期和时间。考虑以下示例:两个人出生于 2013 年 7 月 2 日上午 11 点。第一个出生在英国,第二个出生在加利福尼亚。如果我们询问其中任何一个人的出生日期,看起来他们是在同一时间出生的(这是 LocalDateTime),但如果我们在时间轴上对齐日期(使用 Instant),我们会发现出生在加利福尼亚州的人比在英国出生的小几个小时(注意:为了创建适当的 Instant,我们必须将时间转换为 UTC,这就是差异所在)。<...>
为了从 Instant 中获得较长时间,您可以使用getEpochSecond()方法。
为了从 LocalDateTime 获取较长时间,您应该提供一个 timezone。
归档时间: |
|
查看次数: |
9641 次 |
最近记录: |