在给定当前时区的情况下从 UTC 获取当前偏移量(包括夏令时)
Get current offset (incl. daylight savings) from UTC given the curren timezone
我正在从一些传感器获取数据,这些传感器在各自的(本地)时区记录值。时间戳不表示传感器所在的时区。我正在调用 googleway::google_timezone()
使用 Google 时区 API 并获取与传感器的地理位置相对应的时区。
输出如下(示例):
google_timezone(latlon, key = mykey)
$dstOffset
[1] 0
$rawOffset
[1] -18000
$status
[1] "OK"
$timeZoneId
[1] "America/Toronto"
$timeZoneName
[1] "Eastern Standard Time"
dstOffset
字段为 0,这似乎不正确(位置在加拿大东部夏令时)。我需要在服务器上以 UTC 格式保存数据。使用 attr
将本地时区转换为 UTC 无法解决夏令时问题 - 无论一年中的哪个时间,时差都保持不变。对于北美,由于夏令时,时差在一年中应改变 1 小时。我已经阅读了 Daylight saving time and time zone best practices and https://whosebug.com/tags/timezone/info 的答案,这似乎表明此信息(夏令时)以某种方式包含在 "timezone" 中。
还有其他方法吗?
终于弄明白了 - 这就是 API 报告值的方式。我希望输出报告标准原始偏移量为四小时,冬季偏移量为一小时(当夏令时生效时),夏季偏移量为零。 Google API 反过来:
这是 Google 地图时区 API(绕过 googleway::google_timezone()
)2018 年 1 月 11 日(夏令时有效)的原始输出:
dstOffset: 0
rawOffset: -18000
status: "OK"
timeZoneId: "America/Toronto"
timeZoneName: "Eastern Daylight Time"
这是 2018 年 4 月 21 日的输出(夏令时无效):
dstOffset: 3600
rawOffset: -18000
status: "OK"
timeZoneId: "America/Toronto"
timeZoneName: "Eastern Daylight Time"
这有点违反直觉且令人困惑,因为当夏令时未生效时夏令时偏移量具有非零值!!
无论如何,我希望这可以帮助其他人,也希望有一天我们能摆脱夏令时的祸害。
我正在从一些传感器获取数据,这些传感器在各自的(本地)时区记录值。时间戳不表示传感器所在的时区。我正在调用 googleway::google_timezone()
使用 Google 时区 API 并获取与传感器的地理位置相对应的时区。
输出如下(示例):
google_timezone(latlon, key = mykey)
$dstOffset
[1] 0
$rawOffset
[1] -18000
$status
[1] "OK"
$timeZoneId
[1] "America/Toronto"
$timeZoneName
[1] "Eastern Standard Time"
dstOffset
字段为 0,这似乎不正确(位置在加拿大东部夏令时)。我需要在服务器上以 UTC 格式保存数据。使用 attr
将本地时区转换为 UTC 无法解决夏令时问题 - 无论一年中的哪个时间,时差都保持不变。对于北美,由于夏令时,时差在一年中应改变 1 小时。我已经阅读了 Daylight saving time and time zone best practices and https://whosebug.com/tags/timezone/info 的答案,这似乎表明此信息(夏令时)以某种方式包含在 "timezone" 中。
还有其他方法吗?
终于弄明白了 - 这就是 API 报告值的方式。我希望输出报告标准原始偏移量为四小时,冬季偏移量为一小时(当夏令时生效时),夏季偏移量为零。 Google API 反过来:
这是 Google 地图时区 API(绕过 googleway::google_timezone()
)2018 年 1 月 11 日(夏令时有效)的原始输出:
dstOffset: 0
rawOffset: -18000
status: "OK"
timeZoneId: "America/Toronto"
timeZoneName: "Eastern Daylight Time"
这是 2018 年 4 月 21 日的输出(夏令时无效):
dstOffset: 3600
rawOffset: -18000
status: "OK"
timeZoneId: "America/Toronto"
timeZoneName: "Eastern Daylight Time"
这有点违反直觉且令人困惑,因为当夏令时未生效时夏令时偏移量具有非零值!!
无论如何,我希望这可以帮助其他人,也希望有一天我们能摆脱夏令时的祸害。