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

C#返回的DateTime.MinValue在JavaScript转换后时间异常问题

日期转换偏差原因说明

核心原因有两个:

  • 时区偏移产生8小时差值

C#返回的时间戳-62135596800000对应的是UTC标准时间的0001-01-01 00:00:00,JavaScript的Date对象默认按运行环境的本地时区输出时间。如果运行环境处于东八区(UTC+8),会自动在UTC时间基础上叠加8小时的时区偏移,得到0001-01-01 08:00:00的基础值。

  • 历法规则差异产生5分43秒差值

C#的DateTime类型计算公元1582年之前的时间采用儒略历规则,而JavaScript的Date对象对1582年格里高利历改革之前的时间,默认采用格里高利历逆行推演的规则,两种历法在公元1年的时间计算上存在约5分43秒的固定偏差,叠加前面的时区偏移后,最终得到你观察到的0001-01-01 08:05:43结果。

可选修复方案

  • 前端输出时统一使用UTC时间,规避时区差异:
// 按UTC格式输出日期,即可得到预期的 0001-01-01 00:00:00
const utcDate = `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, '0')}-${String(d.getUTCDate()).padStart(2, '0')} ${String(d.getUTCHours()).padStart(2, '0')}:${String(d.getUTCMinutes()).padStart(2, '0')}:${String(d.getUTCSeconds()).padStart(2, '0')}`
console.log(utcDate)
  • 服务端修改序列化规则,直接返回ISO 8601格式的UTC时间字符串,同时明确标记DateTime字段的Kind属性为Utc,避免两端序列化/反序列化的规则差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:36:02