2017-09-10 24 views
-4

我必须在java中将datetime从一种格式转换为另一种格式。这里是开始时期IM:在java中转换datetime

2001-01-01T01:00Z/2002-02-02T02:00Z 

这里是结果我需要到结束:

2002-02-02T02:00:00 

所以基本上我需要周期的第二部分,我需要添加:00作为几秒钟结束并删除Z.

我不太熟悉日期格式。这是一种标准格式吗?我可以使用某种库来读取和转换这些日期吗?

+1

如果您使用的是Java版本8,请查看java.time'包。如果您使用以前的版本,请查看joda时间库。 – Henrik

+2

@Henrik它是'java.time',而不是'java.util.time'。 –

+0

什么菜鸟错误....尴尬。谢谢。 – Henrik

回答

1

TL;博士

Interval.parse(input) 
     .getEnd() 
     .atOffset(ZoneOffset.UTC) 
     .format(
      DateTimeFormatter.ISO_LOCAL_DATE_TIME 
     ) 

Interval

期间你的输入字符串为标准ISO 8601格式。它代表了一对时刻,最后Z是祖鲁语的缩写,意思是UTC。斜杠字符分隔开始和结束。

解析ThreeTen-Extra项目中找到的Interval类。

Interval interval = Interval.parse(input) ; 

Instant

提取停止的时刻。

Instant instant = interval.getEnd() ; 

OffsetDateTime

我怀疑你应该使用对象那样干Instant而不是操纵字符串。但是,如果您坚持要生成格式化字符串,请将Instant转换为OffsetDateTime

OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC) ; 

此外,它通常是一个坏主意下降偏置/区指示器如Z。由此产生的字符串就其含义而言变得含糊不清,不再代表时间线上的特定时刻。但是,如果你坚持,有一个预定义的事情。

String output = odt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) ;