R语言使用POSIXct函数获取多时区夏令时数据的实现问题
修改后代码
require("lubridate") dayLightSavings = function(y = format(Sys.Date(), "%Y"), tz = c("America/New_York", "Europe/London")){ # 遍历所有时区计算夏令时范围 res <- lapply(tz, function(tz_single){ startDate = paste0(y, '-01-01') endDate = paste0(y, '-12-31') d1 = seq(as.POSIXct(startDate, tz = tz_single), as.POSIXct(endDate, tz = tz_single), by = 'hour') range(d1[lubridate::dst(d1)]) }) # 给结果添加时区名标识 names(res) <- tz return(res) }
核心修改说明
- 给tz参数设置默认值为需求指定的两个时区向量,满足把配置放在参数定义中的要求
- 新增多时区遍历逻辑,支持一次性返回多个时区的计算结果
调用说明
直接执行dayLightSavings()即可得到默认两个时区当前年度的夏令时起止时间,输出为命名列表结构,每个元素对应对应时区的夏令时起止时间向量。如果需要计算其他年度或其他时区的结果,手动传入y和tz参数即可。
内容的提问来源于stack exchange,提问作者worldCurrencies
相关产品推荐
相关产品推荐

