如何将日期从Yahoo的天气API解析为Java Date

时间:2019-05-03 14:11:32

标签: android api yahoo weather

我正在使用Yahoo weather API构建一些简单的应用程序。在JSON接收器中,pubDate字段(根据文档)在RFC 882(看起来像"pubDate":1546992000)中。有谁知道如何在Android中将此类日期转换为日期?

3 个答案:

答案 0 :(得分:1)

尝试一下:

++

您可以检查毫秒数并将其转换为here以来的日期。当我输入要转换的参考值时,它给了我一个从1970年开始的日期。您必须在值的末尾添加“ 000”,或者乘以1000以获取正确的日期。

答案 1 :(得分:1)

应该是这样的: new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date( [yourDateValue] * 1000L)) 您可以在此处测试结果:https://www.unixtimeconverter.io/ [在此处插入发布日期]

答案 2 :(得分:0)

tl; dr

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 );
  

instant.toString():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及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendarSimpleDateFormat

要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

目前位于Joda-Timemaintenance mode项目建议迁移到java.time类。

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?