ASP.NET Core (C#) 和日期相关的时间方法都在 System 命名空间下的 DateTime 类 中,凭借其它语言的经验,我本能的认为和时间戳相关的方法也在这个类里。
但没想到打脸啪啪啪来的如此快,搜索了一番发现 C# 竟然在另外一个 DateTimeOffset 类里。而时间戳到日期的转换也在这个类里。
获取当前时间戳(精确到秒) DateTimeOffset.ToUnixTimeSeconds()
new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()
简单来说,就是将 DateTime.Now 作为构造 DateTimeOffset 实例的参数,然后再调用 ToUnixTimeSeconds() 方法
从某些方面说,这也是将一个 DateTime 实例转换为时间戳的方法
使用范例如下
using System; namespace datetime { class Program { static void Main(string[] args) { // 1. 先获取当前日期时间的实例 var dt = DateTime.Now; // 2. 将 DateTime 转换为 DateTimeOffset 的实例 DateTimeOffset dto = new DateTimeOffset(dt); // 3. 调用 ToUnixTimeSeconds() 获取当前时间戳 Console.WriteLine(dto.ToUnixTimeSeconds()); } } }
将时间戳转换为本地时间(DateTime)实例 DateTimeOffset.ToLocalTime().DateTime
将一个时间戳 (long) 类型的数字转换为本地时间需要2个步骤
- 调用 
DateTimeOffset.FromUnixTimeSeconds(unix)传入时间戳创建一个DateTimeOffset实例 - 然后再调用 
DateTimeOffset实例的ToLocalTime().DateTime创建一个本地时间DateTime的实例 
DateTimeOffset.FromUnixTimeSeconds(unix).ToLocalTime().DateTime
使用范例如下
using System; namespace datetime { class Program { static void Main(string[] args) { long unix = 1635321537; DateTimeOffset dto = DateTimeOffset.FromUnixTimeSeconds(unix); DateTime dt = dto.ToLocalTime().DateTime; Console.WriteLine(dt); } } }
将时间戳(毫秒) 转化为本地时间
其它精确到毫秒的计算方法,其实就是把精确到秒的方法中的 Second 换成了 Milliseconds
var dt = DateTime.Now; DateTimeOffset dto = new DateTimeOffset(dt); var unix = dto.ToUnixTimeMilliseconds();
将本地时间转换为时间戳(毫秒)
var unix = 1635322388287; var dto = DateTimeOffset.FromUnixTimeMilliseconds(unix); var dt = dto.ToLocalTime().DateTime;
            目前尚无回复