0
点赞
收藏
分享

微信扫一扫

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






运行结果

举报

相关推荐

0 条评论