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

使用lubridate的now()指定Etc/GMT+3时区时时间输出错误

Etc/GMT时区命名规则的反向逻辑导致时间偏差

问题的核心原因是IANA时区数据库中Etc/GMT系列的命名规则和常规认知完全相反:

  • Etc/GMT+N 表示比UTC时间晚N小时(对应UTC-N时区)
  • Etc/GMT-N 表示比UTC时间早N小时(对应UTC+N时区)

你需要的是比UTC早3小时的UTC+3时区,应该使用参数 tzone = 'Etc/GMT-3',这样执行后就能得到预期的21:57。而你实际用的Etc/GMT+3对应UTC-3时区,所以计算出的时间是18:57减去3小时,得到15:57,和实际输出一致。

这个反向规则是IANA时区的约定,目的是匹配格林威治向西时区的标识逻辑(西经时区用+号标记),和日常口语里的UTC+X、UTC-X表述刚好相反,很容易造成混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:44:54