You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何在政府公布时区政策变更后更新时区信息?

问题背景

巴西于2019年废除夏令时,该公告于2019年4月发布。所有2019年之前安装的R内置的夏令时规则未同步更新,会出现计算错误,示例复现代码如下:

as.POSIXlt("2019-12-15",tz = 'America/Sao_Paulo')$isdst
# 若R安装于2019年之前,运行该代码将返回1(Windows系统下测试)

解决方案

无需重新安装R,该问题是R内置的时区数据库(Olson数据库)未更新导致的,仅更新时区数据库即可:

  • 通用跨系统方案(优先选择):使用tzupdater包一键更新时区数据库,运行如下代码后重启R即可生效
    install.packages("tzupdater")
    library(tzupdater)
    update_tz_db()
    
  • 效果验证:再次运行上述测试代码,返回值为0则代表更新成功。
  • 不同系统备选方案:
    • Windows系统:如果tzupdater安装失败,可将R升级到4.0及以上版本,新版R内置的时区数据库已经包含巴西最新的时区规则。
    • Linux系统:可先更新系统层面的时区数据,再重启R即可生效,对应命令如下:
      • Debian/Ubuntu 系列:sudo apt update && sudo apt install -y tzdata
      • CentOS/RHEL 系列:sudo yum update -y tzdata
  • 额外提示:如果你日常使用lubridate、timechange等涉及时区处理的第三方包,建议同步更新到最新版本,避免包本身缓存旧的时区规则导致计算错误。

内容的提问来源于stack exchange,提问作者user3226167

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:51:03