java 日期时间戳_datetime - Java时间戳 - 如何创建日期为23/09/2007的时间戳?

TL;博士

java.sql.Timestamp.from (

LocalDate.of ( 2007 , 9 , 23 )

.asStartOfDay( ZoneId.of ( "America/Montreal" ) )

.toInstant()

)

java.time

让我们通过使用Java 8及更高版本中内置的java.time框架显示代码来更新此页面。

这些新类的灵感来自Joda-Time,由JSR 310定义,并由ThreeTen-Extra项目扩展。 他们取代了早期版本的Java捆绑的臭名昭着的旧日期时间类。

在java.time中,YearQuarter是UTC时间轴上的一个时刻。 America/Los_Angeles是瞬区调整为时区(ZoneId)。

时区在这里至关重要。 日期YearQuarter无法在不应用时区的情况下转换为时间轴上的某个时刻。 考虑到巴黎早些时候的新的一天比蒙特利尔还要“新的一天”还要“昨天”。

此外,java.sql.Timestamp表示日期和时间。 因此,我们必须注入一个时间来与日期一起。 我们假设您希望将当天的第一时刻作为时间。 请注意,由于夏令时和可能的其他异常,这并不总是时间YearQuarter。

请注意,与旧的java.util.Date类不同,与Joda-Time不同,java.time类型的分辨率为纳秒而不是毫秒。 这与java.sql.Timestamp的分辨率匹配。

请注意,java.sql.Timestamp有一个讨厌的习惯,即在通过其YearQuarter方法生成字符串表示时,将JVM的当前默认时区隐式应用于其日期时间值。 在这里,您可以看到我的America/Los_Angeles时区。 相比之下,使用标准的ISO 8601格式,java.time类更加清晰。

LocalDate d = LocalDate.of ( 2007 , 9 , 23 ) ;

ZoneId z = ZoneId.of ( "America/Montreal" ) ;

ZonedDateTime zdt = d.asStartOfDay( z ) ;

Instant instant = zdt.toInstant() ;

java.sql.Timestamp ts = java.sql.Timestamp.from ( instant ) ;

转储到控制台。

System.out.println ( "d: " + d + " = zdt: " + zdt + " = instant: " + instant + " = ts: " + ts );

跑步时

d:2007-09-23 = zdt:2007-09-23T00:00-04:00 [美国/蒙特利尔] =即时:2007-09-23T04:00:00Z = ts:2007-09-22 21:00:00.0

顺便说一句,从JDBC 4.2开始,您可以直接使用java.time类型。 无需YearQuarter。

YearQuarter

YearQuarter

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧遗留日期时间类,例如YearQuarter,YearQuarter,&YearQuarter。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程。 并搜索Stack Overflow以获取许多示例和解释。 规范是JSR 310。

您可以直接与数据库交换java.time对象。 使用符合JDBC 4.2或更高版本的JDBC驱动程序。 不需要字符串,不需要YearQuarter类。

从哪里获取java.time类?

Java SE 8,Java SE 9,Java SE 10,Java SE 11及更高版本 - 带有捆绑实现的标准Java API的一部分。Java 9增加了一些小功能和修复。

Java SE 6和Java SE 7大多数java.time功能都被反向移植到Java 6& 7在ThreeTen-Backport。

Android的更高版本的Android捆绑java.time类的实现。

对于早期的Android(< 26),ThreeTenABP项目采用ThreeTen-Backport(如上所述)。 请参见如何使用ThreeTenABP ....

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目是未来可能添加到java.time的试验场。 您可以在这里找到一些有用的课程,如YearQuarter,YearQuarter,YearQuarter等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值