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;
目前尚无回复