[.NET][C#] C#中的时间戳
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年1月1日0时0分0秒(北京时间1970年1月1日8时0分0秒)起至现在的总秒数。
C# 中的 1Tick 是100纳秒(ns)
- 1秒(s) = 1000毫秒(ms)
- 1毫秒(ms) = 1000微秒(μs)
- 1微秒(μs) = 1000纳秒(ns)
- 1秒(s) = 10000000 Ticks
- 1毫秒(ms) = 10000 Ticks

DateTime.Now.Ticks 是公元 1年1月1日0时0分0秒 至当前时区时间的 Tick 数,DateTime.UtcNow.Ticks 是公元 1年1月1日0时0分0秒 至格林威治时间(UTC +0)的 Tick 数。
获取时间戳的方式为
(long)(DateTime.UtcNow - DateTime.UnixEpoch).TotalMilliseconds
(DateTime.UtcNow.Ticks - 621355968000000000) / 10000000
621355968000000000 是 1年1月1日0时0分0秒 至 1970年1月1日0时0分0秒 的 Tick 数,除以10000000是将 Tick 装换为秒。
将时间戳转换为格林威治时间(UTC +0) DateTime 的方法为:
new DateTime(timeStamp * 10000).AddTicks(DateTime.UnixEpoch.Ticks)
new DateTime(timeStamp * 10000000 + 621355968000000000)
将时间戳转换为本地时间的方法为
new DateTime(timeStamp * 10000000 + 621355968000000000).ToLocalTime()

浙公网安备 33010602011771号