標籤:lin 計算 start rtl 9.png nat line 工具 單位
1.
UTC Universal Time Coordinated 統一時間協調 ,GMT格林威治時間 可以認為UTC=GMT
2.c# DateTime在執行個體化的時候如果為指定DateTimeKind,在轉換的時候預設是要轉換的Kind的對立。。
3.在電腦中看到的UTC時間都是從(1970年01月01日 0:00:00)開始計算秒數的。
所看到的UTC時間那就是從1970年這個時間點起到具體時間共有多少秒。 這個秒數就是Unix時間戳記。
4.所以Unix時間戳記的計算一定要統一時間進行計算,比如計算本地時間2017-10-27 10:03的Unix時間戳記,一種方式先把2017-10-27 10:03轉換為UTC時間計算
另一種把1970年01月01日 0:00:00對應成本地時間進行計算
//如果DateTime在執行個體化的時候未指定DateTimeKind,轉換為 UTCTime或者LocalTime的時候,預設是另一個格式 //UTCTime和GMT是一致的,以秒為單位 DateTime time = new DateTime(2017, 10, 27, 10, 3, 0);//2017-10-27 10:03 Console.WriteLine(time.Kind); DateTime utcTime = time.ToUniversalTime(); Console.WriteLine(utcTime);//{2017/10/27 2:03:00} DateTime localTime = time.ToLocalTime(); Console.WriteLine(localTime);//{2017/10/27 18:03:00} //計算本地時間2017-10-27 10:03 Unix時間戳記 方法一:轉換為UTC時間 DateTime startTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long utcTickets = utcTime.Ticks - startTime.Ticks; //計算本地時間2017-10-27 10:03 Unix時間戳記 方法一:轉換為UTC時間 DateTime startLocalTime = startTime.ToLocalTime(); long localTickets = time.Ticks - startLocalTime.Ticks; Console.WriteLine(utcTickets == localTickets); //DateTime.Ticks是 計時周期,相當於100奈秒(1奈秒等於十億分之一秒),轉換成秒的時候要除以 10000000 //unix時間戳記是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。 long utcSeconds = utcTickets / 10000000; //1509069780 可以通過Unix時間戳記站長工具驗證 //將Unix時間戳記轉換為本地時間 DateTime tt = startTime.AddSeconds(utcSeconds).ToLocalTime(); Console.WriteLine((tt == time) + ":" + tt);
輸出結果:
c# DateTime