java将时间转为字符串_java – 将时间字符串转换为ISO 8601格式

TL;博士

Instant.parse( "2015-08-20T08:26:21.000Z" )

.toString()

2015-08-20T08:26:21Z

日期时间格式化程序

如果你要做的只是消除.000,那么使用日期时间对象来解析输入字符串值,然后以不同的格式生成该日期时间值的新字符串表示.

ISO 8601

顺便说一句,如果这是你的目标,那么问题的标题就没有意义,因为第一句中提到的两个字符串都是有效的ISO 8601格式字符串.

> 2015-08-20T08:26:21.000Z

> 2015-08-20T08:26:21Z

java.time

Java 8及更高版本具有新的java.time package.这些新类取代了旧的java.util.Date/.Calendar& java.text.SimpleDateFormat类.那些旧课程令人困惑,麻烦和有缺陷.

瞬间

如果你想要的只是UTC时区,那么你可以使用Instant类.此类表示沿时间轴的点,而不考虑任何特定时区(基本上是UTC).

DateTimeFormatter.ISO_INSTANT

调用Instant的toString使用DateTimeFormatter.ISO_INSTANT格式化程序实例生成日期时间值的字符串表示.此格式化程序自动灵活地关于小数秒.如果值有一整秒,则不会生成小数位(显然是问题想要的).对于小数秒,数字显示在3,6或9的组中,根据需要表示高达纳秒分辨率的值.注意:此格式可能超过ISO 8601毫秒限制(3位小数).

示例代码

以下是Java 8 Update 51中的一些示例代码.

String output = Instant.parse( "2015-08-20T08:26:21.000Z" ).toString( );

System.out.println("output: " + output );

output: 2015-08-20T08:26:21Z

改为小数秒,.08

String output = Instant.parse( "2015-08-20T08:26:21.08Z" ).toString( );

output: 2015-08-20T08:26:21.080Z

如果对UTC以外的任何时区感兴趣,请从该Instant创建一个ZonedDateTime对象.

ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , ZoneId.of( "America/Montreal" ) ) ;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值