如何从雅虎的天气 API 到 Java 日期解析日期

How to parse date from yahoo's weather API to Java Date

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

试试这个:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(yourDateValue)));

您可以检查毫秒并将其转换为 here 的日期。当我写下您的转换参考值时,它给了我 1970 年的日期。您必须在值的末尾添加“000”或乘以 1000 才能获得正确的日期。

应该是这样的: new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date( [yourDateValue] * 1000L)) 你可以在这里测试结果:https://www.unixtimeconverter.io/ [Insert your pubDate here]

tl;博士

Instant.ofEpochSecond( 
    Long.parseLong( "1546992000" ) 
)

…表示UTC.

中2019年1月1日的第一个时刻

2019-01-09T00:00:00Z

java.time

现代方法使用 java.time 类 多年前取代了可怕的 Date/Calendar/SimpleDateFormat 类。

假设 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[Africa/Casablanca]


关于java.time

java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.

要了解更多信息,请参阅 Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310

Joda-Time project, now in maintenance mode, advises migration to the java.time 类.

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

java.time类在哪里获取?