『片段』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时间.
> 之后, 项目开始 跨国家 —— 国外用户 也能使用.
问:
> 如何才能 对现有改动最小 的前提下 —— 完善项目 对国际时间的支持呢 ?
(本文 不是重量级 技术 —— 底层小细节而已,耽误大家时间的话,在此表示歉意。)