获取特定时区的当前时间

KKY*_*KKY 6 timezone datetime r

我有一个具有不同时区的日期和时间格式的数据框,我想将其与该时区的当前时间进行比较。所以我想在下面的“日期和时间”列中添加 1 小时,然后将其与该时区的当前时间进行比较,例如第一个(时区是 EDT,当前时间是 2017-07-18 10:20 in美东时间)

     Date and time   TZ
   2017-07-08 16:00  EDT

   2017-07-17 15:30  PDT

   2017-07-17 11:00  EDT

   2017-07-17 20:00  EDT

   2017-07-17 10:00  EDT

   2017-07-13 15:00  PDT
Run Code Online (Sandbox Code Playgroud)

其中 EDT 是“America/New_York”,PDT 是太平洋时区。我只是在原始数据中有时间,后来有了城市名称,我创建了一个列,以了解它是“EDT 还是 PDT” 不知道如何从这里开始,我在这个时区尝试了一些没有在指定时更改的内容

时区真的很棘手,如果“美国/纽约”时区,我的系统有一个默认值,我不确定我尝试的任何内容是否错误。

任何人都可以给出一些如何在列中获取当地时间的想法吗?

我想要的输出是:

    Date and time  |  TZ | Localtime(current)

  2017-07-08 16:00 | EDT | 2017-07-17  2017-07-18 10:24:19 EDT

  2017-07-17 15:30 | PDT | 2017-07-17  2017-07-18 09:25:19 PDT

  2017-07-17 11:00 | CDT | 2017-07-17  2017-07-18 09:25:19 CDT

  2017-07-17 20:00 | EDT | 2017-07-17  2017-07-18 23:02:19 EDT

  2017-07-17 10:00 | EDT | 2017-07-17  2017-07-18 10:24:19 EDT

  2017-07-13 15:00 | PDT | 2017-07-17  2017-07-18 09:25:19 PDT
Run Code Online (Sandbox Code Playgroud)

tro*_*roh 2

library(lubridate)
currentTime <- Sys.time()
tzs <- c("America/Los_Angeles", "America/Chicago", "America/New_York")
names(tzs) <- c("PDT", "CDT", "EDT")
lapply(tzs[data$TZ], with_tz, time = currentTime)
Run Code Online (Sandbox Code Playgroud)

按照建议使用with_tzfrom lubridate,然后循环。