我正在使用Yahoo weather API来构建一些简单的应用程序。在 JSON 接收器中,有pubDate
字段(根据文档)在 RFC 882 中(看起来像"pubDate":1546992000
)。有谁知道如何在安卓中将这样的日期转换为日期?
它应该是这样的:new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date( [yourDateValue] * 1000L))
你可以在这里测试结果:https://www.unixtimeconverter.io/[在此处插入您的发布日期]
试试这个:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(yourDateValue)));
您可以从此处检查和转换毫秒到日期。当我写下您的转换参考值时,它给了我 1970 年的日期。您必须在值的末尾添加"000"或乘以 1000 才能获得正确的日期。
tl;博士
Instant.ofEpochSecond(
Long.parseLong( "1546992000" )
)
。表示 UTC 中 2019 年 1 月 1 日的第一个时刻。
2019-01-09T00:00:00Z
java.time
现代方法使用几年前取代了可怕的Date
/Calendar
/SimpleDateFormat
类的java.time类。
假设1546992000
表示自 UTC 中 1970 年第一个时刻的纪元参考以来的整秒数,解析为Instant
。
Instant instant = Instant.ofEpochSecond( 1_546_992_000L );
即时字符串(): 2019-01-09T00:00:00Z
要通过特定区域(时区)的人们使用的挂钟时间查看该时刻,请调整为ZonedDateTime
实例。
ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
ZonedDateTime.toString(): 2019-01-09T01:00+01:00[非洲/卡萨布兰卡]
关于java.time
java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧传统日期时间类,如java.util.Date
、Calendar
和SimpleDateFormat
。
要了解更多信息,请参阅Oracle 教程。并搜索堆栈溢出以获取许多示例和解释。规范为 JSR 310。
Joda-Time项目现在处于维护模式,建议迁移到 java.time 类。
您可以直接与数据库交换java.time对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。不需要字符串,不需要java.sql.*
类。
从哪里获得java.time类?
Java SE 8、Java SE 9、Java SE- 10、Java SE 11及更高版本 - 标准 Java API 的一部分,具有捆绑实现。
- Java 9添加了一些小功能和修复。
Java SE 6 和 Java - SE7
- 大多数java.time功能在ThreeTen-Backport中向后移植到 Java 6 和 7。
Android - 更高版本的java.time类的 Android 捆绑实现。
- 对于早期的Android(<26),ThreeTenABP项目适应了ThreeTen-Backport(如上所述)。请参阅如何使用ThreeTenABP...。