C#转换Datetime为 UnixTimeStamp方法和坑点

获取当前时间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,结果可能跟你预想的就不一样了。这个地方需要特别注意一下。

4624570-d7b9c42caacaebdd.jpg
运行结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值