DateTime.UtcNow , DateTime.Now 有什么区别

DateTime.UtcNow vs DateTime.Now(C#)

一句话总结

  • DateTime.UtcNow:获取世界协调时间(UTC,零时区),不受电脑系统时区影响。
  • DateTime.Now:获取本地时间 = UTC 时间 + 当前操作系统时区偏移。

详细对比

var now = DateTime.Now;
var utcNow = DateTime.UtcNow;

表格

项目DateTime.NowDateTime.UtcNow
含义本机系统的本地时间UTC 标准时间(格林威治时间)
Kind 属性DateTimeKind.LocalDateTimeKind.Utc
受系统时区影响✅ 会变,换时区时间就变❌ 不受时区影响,全球同一时刻值相同
夏令时✅ 会受夏令时切换影响,可能出现时间重复 / 断层❌ 没有夏令时问题
推荐场景仅展示给当前本地用户看数据库存储、日志、跨时区系统、时间计算、MES / 上位机强烈推荐

简单例子

假设你电脑时区是东八区(UTC+8):

UtcNow = 2026-10-16 03:00:00
Now    = 2026-10-16 11:00:00

Now = UtcNow + 8小时

重点坑:不要用 DateTime.Now 存到数据库! 如果服务器换时区、客户机器时区不一样,时间就乱掉。日志、设备采集时间、订单时间一律优先存 UTC。

互相转换

DateTime localTime = utcTime.ToLocalTime();   // UTC → 本地
DateTime utcTime = now.ToUniversalTime();     // 本地 → UTC

额外提醒(踩坑点)

  1. DateTime 的 Kind 很重要! 如果你手动构造 new DateTime(xxx),Kind 是 Unspecified,调用 .ToUniversalTime() 会把它当成本地时间去转换,容易出错。
  2. 更高版本推荐:DateTimeOffset.UtcNow 自带时区偏移信息,比 DateTime 更稳妥,跨时区场景首选。

适合你的场景(MES / 上位机、PLC 采集、日志)

✅ 采集设备时间、写日志、入库:用 DateTime.UtcNow 原因:

  • 多台电脑时区不一致也不会乱;
  • 不存在夏令时跳变;
  • 日志按时间排序不会出现跨时区错乱。 界面展示的时候,再转成本地时间给操作员看即可。
上一篇 winform 开机启动
下一篇 signoz和日志系统 elk的区别?
signoz和日志系统 elk的区别?

signoz和日志系统 elk的区别?

SigNoz vs ELK(Elastic Stack),结合你 C# 上位机 + PLC 采集 的场景 一句话概括: ELK:以日志全文检索为核心的日志栈(ES 倒排索引,擅长全文搜报错文本),指标、链路追踪是附加能力,多组件拼凑 SigNoz:OTel 原生一体化可观测平台,

2026-10-20
0 0 0
DateTime.UtcNow , DateTime.Now 有什么区别

DateTime.UtcNow , DateTime.Now 有什么区别

DateTime.UtcNow vs DateTime.Now(C#) 一句话总结 DateTime.UtcNow:获取世界协调时间(UTC,零时区),不受电脑系统时区影响。 DateTime.Now:获取本地时间 = UTC 时间 + 当前操作系统时区偏移。 详

2026-10-16
0 0 0
winform 开机启动

winform 开机启动

c# winform 写的采集程序。平时是登录 windows 桌面,手动点开运行 winform 程序。但是要改成开机启动,不要登录 windows 桌面也能执行 winform 程序。有没有什么办法?不要改造 winform 程序 先说核心结论 WinForm

2026-10-16
0 0 0
C# + Scriban:生成 HTML 报表,自动发邮件(MES / 生产报表场景)

C# + Scriban:生成 HTML 报表,自动发邮件(MES / 生产报表场景)

补充:这套方案在工厂圈子使用情况 MailKit 自动发邮件:大量 MES 在用 Playwright 自动截图 HTML 报表:不少工厂自动化报表在用,属于成熟方案,但不是每个项目都会上。很多项目嫌麻烦就直接 PDF 或者纯表格邮件。 Scriban + Playwright

2026-10-14
0 0 0
C# + Scriban 做静态站点生成

C# + Scriban 做静态站点生成

C# + Scriban 做静态站点生成(对标 baifenwei 的 generate_site.py) Scriban 是 .NET 生态下高性能模板引擎,语法类似 Liquid / Jinja2,刚好用来替代 Python Jinja2,写一个 C# 控制台程序(GenerateSite

2026-10-14
0 0 0
REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向

REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向

REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向 全称 REA = Reverse Engineer Anything,“逆向一切” 只是项目口号,不是能力承诺。 https://rea.tools https://github.com/morluto

2026-10-14
0 0 0
采集上位机LOG文件,不停追加,文件大小50MB

采集上位机LOG文件,不停追加,文件大小50MB

txt 文件很大,40MB,50MB,txt 持续追加,这种场景。Logstash File Input、Flume Taildir、阿里云 Logtail、NewLifeX/X 日志查看工具 Klogg Log Parser Lizard https://githu

2026-10-10
0 0 0
AOI 图片上传 【分布式】方案

AOI 图片上传 【分布式】方案

车间 aoi 的相机图片上传,用飞牛 nas,群晖 nas,高并发,按 5TB / 天、60 天、500 台设备,能不能抗住?如果我在一台服务器放多个 ftp 服务,每条线一个 ftp 服务,端口 8001,第二条线 ftp 服务,端口 8002。ftp 靠谱还 nas 靠谱?稳定,生成环境

2026-10-09
0 0 0
MES 系统 的几种ID比较,雪花id,ULID,UUID

MES 系统 的几种ID比较,雪花id,ULID,UUID

实际场景:浏览器指纹和cookie的UUID 项目FingerprintJS visitorId bdc65ad12633d79792ceeca33a78e6c551.la 访客 ID 5a00c3da-ab80-513d-b7a7-894bcaaecf92来源读取浏览器硬件 / 软件特征,前

2026-10-09
0 0 0
ACCESS数据库访问报错

ACCESS数据库访问报错

AI最擅长找错,分析原因。 💥💥问题1:exclusively locked 因为ACCESS打开数据库后,表:TO_LOGGER_INFO ,当设计视图窗体时,另一个c#小程序去访问这个access数据库会报错: ERROR [HY000] [Microsoft][ODBC Mi

2026-09-29
0 0 0