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

C#中System.DateTime.Now.Ticks返回值是否受夏令时切换影响?

C#中System.DateTime.Now.Ticks与夏令时的关系

System.DateTime.Now.Ticks的返回值完全不受夏令时切换影响,也不会出现1小时的跳变。

原因很直白:

  • Ticks本质是从公元0001年1月1日00:00:00.0000000 UTC开始累计的100纳秒间隔数,是一个绝对时间戳,和本地时区、夏令时规则没有任何关联。
  • DateTime.Now只是将当前UTC时间转换为本地时区的显示时间,但它的Ticks属性依然对应着该时间点的绝对UTC刻度值。夏令时切换仅改变本地时间的显示方式(比如跳过或重复某一小时),但UTC时间是连续流动的,因此对应的Ticks值也会连续递增,不会出现跳变。

举个实际场景的例子:

  • 美国夏令时开始时,本地时间会从周日的2:00直接跳到3:00,但此时UTC时间是连续推进的,所以两次调用DateTime.Now.Ticks得到的值依然是连续增加的,不会跳过对应1小时的Tick数。
  • 夏令时结束时,本地时间会从周日的2:00回退到1:00,此时两次获取的本地时间都是1:00,但它们的Ticks值会相差3600亿(1小时=3600秒,每秒1亿Ticks),因为这两个本地时间对应的是两个不同的UTC时间点。

总结:无论本地时区是否切换夏令时,DateTime.Now.Ticks都是连续递增的绝对时间标识,不会因夏令时规则产生跳变。

内容的提问来源于stack exchange,提问作者Garfield the Grug Brained

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:22:08