如何修改R语言anytime()函数的时间原点以匹配指定时间戳基准
你遇到的结果差异本质是时区设置问题。时间戳1609459200本身对应的就是UTC时区的2021-01-01 00:00:00,你当前调用返回的是EST时区的时间,是因为anytime默认会读取本地系统时区,而EST比UTC晚5小时,因此出现了5小时的偏差。
方案1:单次调用指定时区
调用时直接传入tz="UTC"参数即可得到你预期的结果:
# 调用示例 anytime(1609459200, tz = "UTC") # 返回结果:"2021-01-01 UTC" anytime(1609459201, tz = "UTC") # 返回结果:"2021-01-01 00:00:01 UTC"
方案2:全局设置默认时区
如果需要多次调用,可通过全局选项统一设置anytime的默认时区,无需每次传参:
# 全局设置默认时区为UTC options(anytime.tz = "UTC") # 后续直接调用即可得到预期结果 anytime(1609459200) # 返回结果:"2021-01-01 UTC"
方案3:自定义非标准时间原点(可选)
如果你后续处理的数值不是基于1970-01-01的标准Unix时间戳,而是从你指定的起始时间开始计算的秒数,可以直接封装自定义转换函数:
# 示例:数值为从2021-01-01 00:00:00 UTC开始计算的秒数 custom_time <- function(sec) { as.POSIXct(sec, origin = "2021-01-01", tz = "UTC") } # 调用示例 custom_time(0) # 返回 "2021-01-01 UTC" custom_time(10) # 返回 "2021-01-01 00:00:10 UTC"
内容的提问来源于stack exchange,提问作者Jane Miller
相关产品推荐
相关产品推荐

