首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.time.Instant无法解析逗号

java.time.Instant无法解析逗号
EN

Stack Overflow用户
提问于 2016-08-12 08:50:35
回答 1查看 293关注 0票数 0

这将失败:

代码语言:javascript
复制
Instant.parse( "2007-12-03T10:15:30,978Z" )  // Fails with comma

当此操作成功时:

代码语言:javascript
复制
Instant.parse( "2007-12-03T10:15:30.978Z" )  // Succeeds with dot

在分析或生成日期-时间值的字符串表示形式时,java.time类默认使用标准ISO 8601格式。

ISO8601标准允许COMMAFULL STOP (点,句点)作为decimal mark持续几分之一秒。comma is preferred

但是,当我尝试从包含逗号的输入字符串parse Instant时,抛出了DateTimeParseException。一个类似的带点的字符串成功了。

怎么啦?如何解析包含逗号的标准字符串?

EN

回答 1

Stack Overflow用户

发布于 2016-08-12 08:50:35

tl;dr

在java.time中只有点有效。只需用点替换逗号即可。

代码语言:javascript
复制
"2007-12-03T10:15:30,978Z".replace( "," , "." )

仅支持点,不支持逗号

在Java8中,java.time类只需要一个句号(点,句点)字符作为小数标记。

在大多数其他方面,java.time类为ISO 8601标准格式提供了出色的支持。幸运的是,这一缺陷很容易在您自己的代码中得到弥补。解析ISO 8601字符串时,只需将任何逗号替换为点即可。

代码语言:javascript
复制
String input = "2007-12-03T10:15:30,978Z" ;
Instant instant = Instant.parse( input.replace( "," , "." ) );

反之亦然,使用首选的逗号而不是点输出字符串。请注意,某些协议和库可能偏向其中任何一个角色。

代码语言:javascript
复制
String output = instant.toString().replace( "." , "," ) ;

有关更详细的讨论,请参阅JDK-8132536的问题 和问题页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38908226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档