java格式化时间字符串 毫秒_SimpleDateFormat是否有格式字符串来获取毫秒日期时间值,而不是人类可读的格式?...

旧的和过时的

SimpleDateFormat

类不能这样做。它的替代品,现代的

DateTimeFormatter

,可以。

DateTimeFormatter epochMilliFormatter = new DateTimeFormatterBuilder()

.appendValue(ChronoField.INSTANT_SECONDS)

.appendValue(ChronoField.MILLI_OF_SECOND, 3)

.toFormatter();

Instant sampleInstant = OffsetDateTime

.of(2020, 1, 11, 10, 21, 40, 0, ZoneOffset.UTC)

.toInstant();

String formattedValue = epochMilliFormatter.format(sampleInstant);

System.out.println(formattedValue);

此代码段的输出是您提到的数字:

1578738100万

使用

ChronoField.INSTANT_SECONDS

在格式化程序中

从那个时代开始。我们想要

毫秒

,所以我们需要附加

ChronoField.MILLI_OF_SECOND

立即并确保它们准确打印在3个位置,零填充。这就是

3

作为第二个论点

appendValue()

做。

有没有可能

格式字符串

产生一个字符串

毫秒?

不,使用格式模式字符串是不可能的,使用

日期格式

也没有

日期时间格式

. 你可以检查每一个可能的模式字母,并看到没有模式字母,无论是秒还是毫秒,从纪元。

不过,你确定你想要吗?

即使这是为了存储或用于系统之间的数据交换,通常也不建议在epoch之后使用milliseoncds,因为它们不是人类可读的,因此在调试和特殊查询中很麻烦。在大多数情况下,最好使用ISO 8601格式的字符串,比如

2020-01-11T10:21:40Z

. 详见巴兹尔·布尔克的另一个答案。国际标准化组织8601格式被设计成可供人类和计算机阅读的格式。

无论如何,您不应该使用SimpleDateFormat

这个

日期格式

类是出了名的麻烦(尽管解析比格式化更麻烦)。它也早已过时。这个

Date

你提到的类设计得很差,而且很早就过时了。我建议您使用java.time,即现代的java日期和时间API,正如我上面所做的那样。

链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值