【发布时间】:2020-05-17 22:33:31
【问题描述】:
我有这个时间戳数据库 (AlertTime),并且我知道这些时间戳在哪个时区 (TimeZone)。我知道如何将这些日期设置为 POSIXCT 或者它们是否都是 UTC,但我很难将它们识别为本地时间戳,因为大多数函数不接受 tz 的向量。
我确实需要格式正确的本地时间戳 (AlertTimeLocal) 和等效的 UTC (AlertTimeUTC)。
AlertTime TimeZone AlertTimeLocal (desired) AlertTimeUTC (desired)
11 May 2020, 06:22 PM America/Denver 2020-05-11 18:22:00 MDT 2020-05-12 00:22:00 MDT
11 MAY 2020, 04:11 AM America/Los_Angeles 2020-05-11 04:11:00 PDT 2020-05-11 11:11:00 UTC
10 MAY 2020, 03:38 PM America/Chicago 2020-05-10 15:38:00 CDT 2020-05-10 20:38:00 CDT
我正在使用此代码,但它似乎不再执行任何操作:
FreshAir$AlertTimeLocal <- mapply(function(x,y) {format(x, tz=y, usetz=TRUE)}, FreshAir$AlertTime, FreshAir$TimeZone)
将所有 RAW 时间戳设置为 UTC,然后将它们转换为另一个方向的等效时区,是否会有一个 hacky 解决方案?
【问题讨论】:
-
你可以试试
force_tzs(dmy_hm(FreshAir$AlertTime), tzones = FreshAir$TimeZone) -
你在数据中的列名和code列名不匹配
-
如果您错过了我的答案编辑,请注意您不能(很容易)在单个列中拥有不同的本地时区。
-
(1) 在我的回答中作为评论可能更合适。 (2) 我在回答中指出,一个向量中不能有不同的区域。您的回答 描述 所需的时间,但它们不是 OP 要求的:
AlertTimeLocal的时区是 UTC,而不是 OP 要求的 MDT、PDT 和 CDT。诚然,接受答案的 OP 已经结束了,但所要求的事情不会发生(很容易)。要了解我的意思,请尝试mutate(AlertTimeLocal = format(AlertTimeLocal, format = "%Y-%m-%d %H:%M:%S %Z"))。