【问题标题】:How to parse date from yahoo's weather API to Java Date如何将雅虎天气 API 中的日期解析为 Java 日期
【发布时间】:2019-05-03 14:11:31
【问题描述】:

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

【问题讨论】:

    标签: android api yahoo weather


    【解决方案1】:

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

    【讨论】:

    • 仅供参考,java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 等麻烦的日期时间类现在已被 java.time 类所取代。大多数 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 Java 7。进一步适用于ThreeTenABP 中的早期 Android (How to use ThreeTenABP…
    • 这个答案忽略了时区的关键问题。
    【解决方案2】:

    试试这个:

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

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

    【讨论】:

    • 这些可怕的类在几年前被 java.time 类所取代。
    【解决方案3】:

    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[非洲/卡萨布兰卡]


    关于java.time

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

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

    Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

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

    从哪里获得 java.time 类?

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2012-08-24
      • 1970-01-01
      • 2013-10-25
      • 2011-12-14
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多