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

Linux AWS EC2实例中.NET Core 3的DateTime.Now返回UTC时间异常

.NET Core 3中DateTime.Now与UTC时间一致的异常排查

我正在使用.NET Core 3开发,代码中用DateTime.Now获取当前本地时间,测试代码为:

Console.WriteLine("----- Local Time : " + DateTime.Now + "UTC : " + DateTime.UtcNow); 

日志显示Local Time与UTC时间完全一致,示例输出:----- Local Time : 01/12/2023 11:27:49 UTC : 01/12/2023 11:27:49。但通过timedatectl查看服务器时间,服务器已配置本地时区,请问该异常原因是什么?

可能的原因:

  • .NET Core进程未加载最新时区配置:系统时区修改后,已运行的.NET Core进程不会自动感知变更,仍会沿用启动时加载的时区设置,若启动时未正确读取本地时区,就会默认使用UTC。
  • TZ环境变量未正确配置:Linux环境下,.NET Core优先读取TZ环境变量确定时区。如果该变量未设置或被设为UTC,即使系统时区正确,DateTime.Now也会返回UTC时间。
  • 系统时区数据缺失:部分精简版Linux发行版缺少完整的时区数据库(通常存放在/usr/share/zoneinfo/目录),导致.NET Core无法解析本地时区,只能 fallback 到UTC。

对应解决方法:

  • 重启.NET Core应用进程,让其重新加载系统时区配置。
  • 检查并设置TZ环境变量,比如启动应用前执行export TZ="Asia/Shanghai"(替换为你的实际时区),或在容器启动参数中添加该环境变量。
  • 安装系统时区数据包:Debian/Ubuntu执行apt-get install tzdata,CentOS/RHEL执行yum install tzdata,确保时区文件完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:10:26