java 转换日期格式_java-转换日期格式

tl; dr

ZonedDateTime.parse(

"Jun 13 2003 23:11:52.454 UTC" ,

DateTimeFormatter.ofPattern ( "MMM d uuuu HH:mm:ss.SSS z" )

)

.toInstant()

.toEpochMilli()

1055545912454

java.time

此答案在Lockni的答案的基础上扩展。

YearQuarter

首先,通过创建YearQuarter对象来定义格式模式以匹配您的输入字符串。

String input = "Jun 13 2003 23:11:52.454 UTC";

DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MMM d uuuu HH:mm:ss.SSS z" );

YearQuarter

将字符串解析为YearQuarter。您可以将该类视为:(YearQuarter + ZoneId)。

ZonedDateTime zdt = ZonedDateTime.parse ( "Jun 13 2003 23:11:52.454 UTC" , f );

zdt.toString():2003-06-13T23:11:52.454Z [UTC]

MZe55.png

从时代开始计数

我不建议将日期时间值跟踪为从时期开始计数。 这样做会使调试变得棘手,因为人类无法从数字中识别出有意义的日期时间,因此无效/意外的值可能会漏掉。 同样,这样的计数在粒度(整秒,毫,毫微,纳米等)和历时(各种计算机系统至少要打两打)方面也是模棱两可的。

但是,如果您坚持认为,您可以从1970年UTC(YearQuarter)的第一时刻到YearQuarter类获得毫秒数。 请注意,这意味着在将毫微秒缩短为几毫秒的过程中会丢失数据。

Instant instant = zdt.toInstant ();

Instant.toString():2003-06-13T23:11:52.454Z

long millisSinceEpoch = instant.toEpochMilli() ;

1055545912454

关于java.time

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

要了解更多信息,请参见Oracle教程。 并在Stack Overflow中搜索许多示例和说明。 规格为JSR 310。

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

您可以直接与数据库交换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功能都在ThreeTen-Backport中反向移植到Java 6和7。

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

对于早期的Android(<26),ThreeTenABP项目改编了ThreeTen-Backport(如上所述)。 请参阅如何使用ThreeTenABP…。

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如YearQuarter、YearQuarter、YearQuarter等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值