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

为何Raku中DateTime.now与Date.today.DateTime时区不同?

Raku DateTime时区差异原因解析

核心原因是两个DateTime对象的创建逻辑不同,默认时区规则存在差异:

  • DateTime.now的时区规则:
    该方法默认采用系统本地时区生成对象。你的系统时区对应+08:00(秒数偏移为28800),因此$now的时区偏移值为28800,输出显示为+08:00。

  • Date.today.DateTime的时区规则:
    Date.today获取的是本地日期,但调用.DateTime方法时,该方法默认生成UTC时区(偏移0秒,即Z时区)的DateTime对象。后续调用.later(:8hours)仅在UTC时间基础上增加8小时,不会修改时区属性,因此$eight-hours-later的时区偏移始终为0。

直接验证依据:

从你提供的REPL输出可直接确认:

[28] > Date.today.DateTime.timezone
0

这直接证明Date.today.DateTime生成的是UTC时区的对象。

额外提示:

如果需要让Date.today.DateTime生成本地时区的对象,可以显式指定时区参数,例如:

my $local-today-datetime = Date.today.DateTime(:timezone(DateTime.now.timezone));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:55:56