C# 时间戳 unix timestamp

在跟其它语言进行数据交换的时候我们可以经常会碰到 Unix的 timestamp。 我们会看到如下的数字 1627920000 怎么将这样的一个数字转成 C#的时间呢。

实际这个数字是 从 1970-1-1开始的秒数 (有一些是提供毫秒数)

var d = new DateTime(1970,1,1);
var d2 = d.AddSeconds(1627920000);

Console.WriteLine(d2);

var t = d2-d;
Console.WriteLine(t.TotalSeconds);

如果是毫秒数的话

var d = new DateTime(1970,1,1);
var d2 = d.AddMilliseconds(1627920000000);

Console.WriteLine(d2);

var t = d2-d;
Console.WriteLine(t.TotalMilliseconds);

UTC

有一些用的是UTC

var t = DateTime.UtcNow - new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
Console.WriteLine(t.TotalMilliseconds);

也可以直接用 DateTimeOffset这个类

	DateTimeOffset.UtcNow.ToUnixTimeSeconds().Dump();      //1703325514

//毫秒的
	DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().Dump(); //1703325514553

定义自己的时间戳

我们也可以规定一个时间的起点,来生成我们自己的时间戳 比如当下的时间 2022-10-5,

var d = new DateTime(2022,10,5);

var t = DateTime.Now-d;
Console.WriteLine(t.TotalSeconds);

通过这个我们可以用来做分布式Id的一部分。

下一篇:时区 time zone
最近更新的
...