R语言alphavantager包tibble的timestamp时区转换问题
问题解决:将alphavantager返回的东部时区时间转换为UTC
你当前的操作只是修改了时间对象的时区标签,没有真正转换时间值。因为as.integer(tst$timestamp)提取的是UTC纪元秒数(POSIXct本质就是基于UTC的时间戳),再转成UTC时区的POSIXct,只会给同一个数值换标签,时间显示自然不会变。
正确操作步骤
核心是先明确原时间的时区为美国东部时区,再转换到UTC:
方法一:用lubridate包(直观推荐)
library(lubridate) # 强制指定原时间的时区为美国东部时区 tst$timestamp <- force_tz(tst$timestamp, tzone = "America/New_York") # 转换为UTC时区 tst$timestamp <- with_tz(tst$timestamp, tzone = "UTC")
方法二:基础R实现
# 先按东部时区解析原时间(确保时区属性正确) tst$timestamp <- as.POSIXct(format(tst$timestamp), tz = "America/New_York") # 转换为UTC时区 tst$timestamp <- as.POSIXct(tst$timestamp, tz = "UTC")
验证转换结果
执行后用dput(head(tst$timestamp))查看,时间数值会对应UTC的正确时刻(比如原东部时间2024-03-01 09:30:00会转为UTC的2024-03-01 14:30:00),同时tzone属性为"UTC"。
内容的提问来源于stack exchange,提问作者RDS
相关产品推荐
相关产品推荐

