如何获取2019年全球各时区UTC与本地时间的偏移量?
解决方案
你的代码核心问题是每次循环都会覆盖temp变量,最终仅保留最后一个时区的偏移数据,且初始未定义temp会触发报错。以下是修正后的实现方式:
1. 获取单个日期的全球时区偏移量
library(lutz) # 获取所有标准Olson时区 time_zones <- OlsonNames() # 初始化空数据框存储结果 temp <- data.frame() # 循环遍历每个时区,逐步合并结果 for (tz in time_zones) { offset_result <- tz_offset("2019-01-01", tz = tz) temp <- rbind(temp, offset_result) } # 查看前几行结果 head(temp)
2. 扩展到2019年全年日期
如果需要覆盖全年所有日期,可以先生成完整日期序列,再用更高效的方法批量处理:
library(lutz) library(dplyr) # 生成2019年所有日期 dates_seq <- seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by = "day") # 批量处理每个日期的时区偏移,合并结果 all_offsets <- lapply(dates_seq, function(date) { tz_offset(date, tz = OlsonNames()) }) %>% bind_rows() # 查看结果结构 str(all_offsets)
关键说明
- 用
lapply+bind_rows替代循环rbind,处理大量数据时效率更高 tz_offset返回的结果包含tz(时区名称)、utc_offset(UTC偏移小时数)、dst(是否处于夏令时)等字段,自动适配夏令时切换的时区变化- Olson时区列表包含全球所有标准时区,无需额外筛选
内容的提问来源于stack exchange,提问作者Neicooo
相关产品推荐
相关产品推荐

