尝试理解日期时间字符串中的“ PT1H”

时间:2019-05-12 07:04:07

标签: timezone timezone-offset

我正在使用Weather API作为项目的一项服务来提取天气信息。我试图了解一些我似乎找不到信息的时区偏移量。

我使用的URL是:

https://api.weather.gov/gridpoints/VEF/154,48

以下是一些示例返回值:

"temperature": {
    "sourceUnit": "F",
    "uom": "unit:degC",
    "values": [
        {
            "validTime": "2019-05-11T16:00:00+00:00/PT1H",
            "value": 18.333333333333371
        },
        {
            "validTime": "2019-05-12T04:00:00+00:00/PT2H",
            "value": 16.1111111111112
        },
        {
            "validTime": "2019-05-12T21:00:00+00:00/PT4H",
            "value": 26.666666666666742
        },
        ...
    ]
}

我了解 PT 是指太平洋时区。但我似乎找不到 1H 2H 等字符旁边的任何信息。

如果有人可以提出建议,将不胜感激-谢谢

1 个答案:

答案 0 :(得分:3)

PT1H =一小时

  

我了解PT表示太平洋时区。

不,不正确的假设。不是时区。

PT1H代表duration,这是与时间轴无关的时间跨度。此格式在ISO 8601标准中定义。

P标记开始,是“ Period”(持续时间的同义词)的缩写。 T将任何年-月-日-天部分与任何时-分-秒部分分开。

所以PT1H的意思是“一个小时”。两个半小时就是PT2H30M

解析

您的输入"2019-05-11T16:00:00+00:00/PT1H"与开始时间和持续时间相结合是标准的part of the ISO 8601

可以通过Interval.parse库中的ThreeTen-Extra方法来解析这样的组合字符串。

Interval interval = Interval.parse( "2019-05-11T16:00:00+00:00/PT1H" ) ;