『片段』C# DateTime 时间相减 和 时区的关系
本文只是基础代码片段,直接先写 结论: C# DateTime 时间相减 —— 和 时区无关,只和时间值有关。
运行结果:
测试代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Temp_20160623_时间时区 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 DateTime timeNow = DateTime.Now; //当前本地时间 (北京时间+8) 13 DateTime timeUtcNow = DateTime.UtcNow; //世界协调时间 (格林威治+0) 14 DateTime timeUtcNow2 = new DateTime( 15 timeUtcNow.Year, timeUtcNow.Month, timeUtcNow.Day, 16 timeUtcNow.Hour, timeUtcNow.Minute, timeUtcNow.Second, timeUtcNow.Millisecond, 17 DateTimeKind.Local); //世界协调时间 (北京时间+0) —— 和 UTC时间 值一样 的 北京时间 18 19 20 Console.WriteLine("北京时间+8 :" + timeNow); 21 Console.WriteLine("格林威治+0 :" + timeUtcNow); 22 Console.WriteLine("北京时间+8 :" + timeUtcNow2); 23 24 25 26 //timeNow 和 timeUtcNow 相差 8个时区 27 //问: 这两个时间相减 等于多少? 28 29 30 TimeSpan timeSpan = timeNow - timeUtcNow; 31 Console.WriteLine("({0} +8) - ({1} +0) = {2}", timeNow, timeUtcNow, timeSpan.TotalHours.ToString("F6")); 32 33 TimeSpan timeSpan2 = timeNow - timeUtcNow2; 34 Console.WriteLine("({0} +8) - ({1} +8) = {2}", timeNow, timeUtcNow2, timeSpan2.TotalHours.ToString("F6")); 35 36 37 } 38 } 39 }
于是 就有了 这样的问题 (如下问题 仅作思考):
> 最开始, 项目是 国内项目 —— 从不考虑时区, 统一用的 +8时间, 存入数据库的 也是 +8时间.
> 之后, 项目开始 跨国家 —— 国外用户 也能使用.
问:
> 如何才能 对现有改动最小 的前提下 —— 完善项目 对国际时间的支持呢 ?
(本文 不是重量级 技术 —— 底层小细节而已,耽误大家时间的话,在此表示歉意。)
分类:
练手片段调错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?