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

Dart中DateTime指定日期与DateTime.now()时区偏移不一致问题

问题解答:Dart DateTime时区偏移差异原因

这是因为**夏令时(Daylight Saving Time, DST)**的影响,具体解释如下:

  • DateTime.now()返回当前系统的实时时间,若当前处于夏令时生效时段(比如北美东部时区的EDT时段,UTC偏移为-4小时),输出的时区偏移就是-4:00:00.000000。
  • DateTime(2021)默认创建的是2021年1月1日00:00:00的时间,而1月属于该时区的非夏令时时段(比如北美东部时区的EST时段,UTC偏移为-5小时),因此时区偏移为-5:00:00.000000。

你可以通过指定夏令时生效的月份验证这个逻辑,比如修改代码:

void main() {
  print('OFFSET: ${DateTime.now().timeZoneOffset}');
  print('OFFSET2: ${DateTime(2021).timeZoneOffset}');
  print('OFFSET3: ${DateTime(2021, 7).timeZoneOffset}'); // 7月处于夏令时时段
}

此时OFFSET3的输出会和OFFSET一致,因为7月是夏令时生效的月份。

Dart的DateTime.timeZoneOffset并非返回固定的时区偏移,而是根据具体日期是否处于夏令时时段,返回对应时段的UTC偏移值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:34:50