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

Windows10同配置R/lubridate两台机器出现tz/CCTZ错误差异

同一R与lubridate配置下Windows笔记本报错、台式机正常的原因分析

以下代码在Windows10笔记本上出现错误,但在配置完全相同(R版本4.2.1、lubridate版本1.8.0)的Windows10台式机上可正常运行,请问可能的原因是什么?

> library(lubridate)

Attaching package: ‘lubridate’

The following objects are masked from ‘package:base’:

    date, intersect, setdiff, union

> Sys.getenv("TZDIR")
[1] "C:/PROGRA~1/R/R-42~1.1/share/zoneinfo"
> lubridate::force_tz(ymd_hm("2021-03-01 10:40"), tz="UTC")
[1] "2021-03-01 10:40:00 UTC"
> lubridate::force_tz(as.POSIXct("2021-03-01 10:40"), tz="UTC")
Error: CCTZ: Unrecognized timezone of the input vector: ""
> 
> lubridate::force_tz(ymd_hm("2021-03-01 10:40"), tz=Sys.timezone())
Error: CCTZ: Unrecognized output timezone: "Australia/Sydney"
> 
> R.version
               _                                
platform       x86_64-w64-mingw32                
arch           x86_64                           
os             mingw32                          
crt            ucrt                             
system         x86_64, mingw32                  
status                                          
major          4                                
minor          2.1                              
year           2022                             
month          06                               
day            23                               
svn rev        82513                            
language       R                                
version.string R version 4.2.1 (2022-06-23 ucrt)
nickname       Funny-Looking Kid                
> packageVersion("lubridate")
[1] ‘1.8.0’

可能的原因

  • 时区数据库文件异常:笔记本上R的时区数据库目录(C:/PROGRA~1/R/R-42~1.1/share/zoneinfo)可能存在文件损坏、缺失,或者权限限制导致lubridate无法读取,而台式机的该目录文件完整可访问。
  • 系统时区配置差异:两台电脑的Windows系统时区设置存在隐性差异,比如笔记本的时区注册表项损坏,导致Sys.timezone()返回的Australia/Sydney无法被lubridate依赖的CCTZ时区库正确解析。
  • 用户权限问题:笔记本可能以普通用户权限运行R,无法读取时区数据库目录的文件;台式机则可能使用管理员权限,或该目录的文件权限设置更宽松。
  • POSIXct对象时区缺失:笔记本上as.POSIXct("2021-03-01 10:40")生成的对象未附带时区信息(报错显示输入时区为空),这是因为系统默认时区配置异常,导致base R无法自动为POSIXct对象赋予时区,而台式机的默认时区配置正常。
  • CCTZ库缓存异常:lubridate依赖的CCTZ库在笔记本上存在异常本地缓存,导致时区识别失败,台式机的缓存状态则正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:15:41