试图了解日期时间字符串中的“ PT1H”

adv*_*ner 2 timezone timezone-offset

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

我使用的网址是:

https://api.weather.gov/gridpoints/VEF/154,48
Run Code Online (Sandbox Code Playgroud)

这是一些示例返回值:

"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
        },
        ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

我知道PT的意思是太平洋时区。但是我似乎找不到像1H2H等字符旁边的任何信息。

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

Bas*_*que 8

PT1H =一小时

我知道PT的意思是太平洋时区。

不,错误的假设。不是时区。

PT1H代表时间,而不是绑在时间轴的时间跨度。此格式在ISO 8601标准中定义。

P标志开始的时候,短期的“期”,为持续的代名词。该T分离任何小时-分-秒部分的任何年,月,日部分。

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

解析中

"2019-05-11T16:00:00+00:00/PT1H"将开始时刻和持续时间相结合的输入是ISO 8601标准的一部分。

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

Interval interval = Interval.parse( "2019-05-11T16:00:00+00:00/PT1H" ) ;
Run Code Online (Sandbox Code Playgroud)

An Interval代表一对瞬间,一对Instant物体。在您的情况下,通过将持续时间添加到开始时刻来计算第二时刻。

  • 可能值得一提的是,“周期”和“持续时间”在*某些*上下文中是同义词,但在其他上下文中不是同义词 - 例如在“java.time”中,它们具有完全不同(但相关)的含义。这很不幸,但在我看来值得警告。 (3认同)