我正在使用天气 API 将天气信息作为我的项目的服务进行下载。我正在尝试了解一些我似乎无法找到相关信息的时区偏移。
我使用的网址是:
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 等字符旁边的信息。
如果有人可以提供建议,我们将不胜感激 - 谢谢
PT1H
= 一小时我理解 PT 表示太平洋时区。
不,错误的假设。不是时区。
PT1H
代表持续时间,即与时间线无关的时间跨度。此格式在 ISO 8601 标准中定义。
P
标志着开始,我想是“Period”的缩写,是持续时间的同义词。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" ) ;
一个
Interval
代表一对时刻,一对 Instant
物体。在您的例子中,第二个时刻是通过将持续时间添加到起始时刻来计算的。我们可以询问这对矩,表示为 Instant
对象(根据定义始终采用 UTC)。
Instant start = interval.getStart() ;
Instant stop = interval.getEnd() ;