首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中将"2018-02-02T06:54:57.744Z“字符串转换为日期

在Android中将"2018-02-02T06:54:57.744Z“字符串转换为日期
EN

Stack Overflow用户
提问于 2018-02-03 15:11:53
回答 3查看 56.9K关注 0票数 2

基本上我的日期字符串是ISO-8601日期字符串,所以我搜索将ISO-8601日期字符串转换为日期,但解决方案很长。以下是详细信息。

我有一个字符串2018-02-02T06:54:57.744Z想要将它转换为日期,但我得到了错误:

代码语言:javascript
运行
复制
java.text.ParseException: Unparseable date: "2018-02-02T06:54:57.744Z"

我正在使用以下技术来做到这一点,但没有成功:

代码语言:javascript
运行
复制
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
        parser.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date parsed = parser.parse(utcDateString);
        return parsed;

我还在SimpleDateFormat中使用了以下模式,但没有成功:

代码语言:javascript
运行
复制
yyyy-MM-dd'T'HH:mm:ss.SSSZ
yyyy-MM-dd HH:mm:ss.S
yyyy-MM-dd'T'HH:mm:ssX
yyyy-MM-dd'T'HH:mm'Z'

这个问题的任何解决方案。

EN

Stack Overflow用户

发布于 2018-02-03 16:08:40

tl;dr

代码语言:javascript
运行
复制
Instant.parse( “2018-02-02T06:54:57.744Z” ) 

java.time

现代方法使用java.time类。

Instantjava.util.Date的替代品,用协调世界时表示时间线上的某个时刻。

您的输入字符串恰好符合ISO 8601标准。在解析/生成字符串时,java.time类默认使用标准格式。所以不需要指定格式化模式。

代码语言:javascript
运行
复制
Instant instant = Instant.parse( “2018-02-02T06:54:57.744Z” ) ;

最好完全避免麻烦的java.util.Date类。但是如果你坚持,可以使用添加到旧类中的新方法进行转换。

代码语言:javascript
运行
复制
Date d = Date.from( instant ) ;

关于早期的Android,参见ThreeTen-Backport和ThreeTenABP项目。

关于java.time

框架内置于Java8和更高版本中。这些类取代了麻烦的旧legacy日期时间类,如java.util.DateCalendarSimpleDateFormat

现在在maintenance mode中的项目建议迁移到java.time类。

要了解更多信息,请参阅。和搜索堆栈溢出,以获得许多示例和解释。规范为JSR 310

从哪里获取java.time类?

  • ,,以及后来内置的
    • 。与implementation.
    • Java 9捆绑在一起的标准Java API的
    • 部分添加了一些次要功能和fixes.

  • 和.

中的

  • 许多java.time功能已向后移植到Java6和7

    • 更高版本的Android捆绑实现的java.time类。
    • 对于较早的Android,项目适配ThreeTen-Backport (如上所述)。请参阅.

票数 8
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48594916

复制
相关文章

相似问题

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