时区转换:“ tz”值无效-R

时间:2020-04-13 10:17:41

标签: r data.table format timezone posixct

我的目标是将“系统”时区转换为本地时区。我在列中保存了所有相关的时区,但是它不起作用,请参见下面的示例(错误=无效的“ tz”值):

   db<-data.table(c('Africa/Windhoek','Europe/Andorra','America/Chicago'), c('2017-12-31 17:04:00','2017-9-1 13:30:12','2017-12-15 21:33:13')) 
   names(db) = c('tz','date')
   db$date<- as.POSIXct(db$date, tz="Europe/London", format= c("%Y-%m-%d %H:%M:%OS"))

   db$original_time<-format(db$date, tz=db$tz) 

我在invalid 'tz' value, problems with time zone阅读了第二个答案,(“无效的'tz'值”错误的原因是,由于某种原因,R不接受tz = df $ var。如果您设置tz ='America / New_York'或其他字符值,那么它将起作用。)但是,此手动输入确实是解决此问题的唯一方法,因为我有247个级别/时区,并且我相信更流畅的方式?

谢谢!

1 个答案:

答案 0 :(得分:2)

问题是format需要一个字符串类型,但是您给它一个向量。

尝试迭代格式化

library(purrr)
map2(df$date, df$tz, ~ format(.x, tz = .y))