C#轉換Datetime為 UnixTimeStamp方法和坑點

yzf01發表於2021-09-09

獲取當前時間UnixTimeStamp

DateTime.UtcNow返回以UTC表示的當前時間,Kind屬性是DateTimeKind.Utc

private static readonly long Jan1St1970Ms = new  DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).Ticks;public static long CurrentSecondUnixTimestamp(){   return (DateTime.UtcNow.Ticks - Jan1St1970Ms) / 10000000L;
}

轉換時間到UnixTimestamp

DateTime.ToUniversalTime.  將當前 DateTime 物件的值轉換為協調世界時 (UTC)。

public static long UnixTimeStampUTC(DateTime dateTime){
     Int32 unixTimeStamp;
     DateTime zuluTime = dateTime.ToUniversalTime();
     DateTime unixEpoch = new DateTime(1970, 1, 1);
     unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds;     return unixTimeStamp;
}

需要注意一下的坑點

DateTime.ToUniversalTime.  將當前 DateTime 物件的值轉換為協調世界時 (UTC)。

 public static void Main()
 {
     DateTime x1 = new DateTime(2019, 1, 22,16,30,22);     
     long x = (x1.ToUniversalTime().Ticks - 621355968000000000L) / 10000000L;     long x2 = (x1.Ticks - 621355968000000000L) / 10000000L;
     
     Console.WriteLine("轉換ToUniversalTime:" + x);
     Console.WriteLine("未轉換ToUniversalTime:" + x2);
 }

如果在獲取UnixTimeStamp的時候不先ToUniversalTime,結果可能跟你預想的就不一樣了。這個地方需要特別注意一下。

圖片描述

執行結果



作者:菜鳥飛不動
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2334/viewspace-2820759/,如需轉載,請註明出處,否則將追究法律責任。

相關文章