你的位置:首页 > ASP.net教程

[ASP.net教程]『片段』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时间.
> 之后, 项目开始 跨国家 —— 国外用户 也能使用.
问:
> 如何才能 对现有改动最小 的前提下 —— 完善项目 对国际时间的支持呢 ?

 

(本文 不是重量级 技术 —— 底层小细节而已,耽误大家时间的话,在此表示歉意。)