ASP.NET Core 日期时间(二) 之 时间戳 DateTimeOffset 获取、转换为本地时间

yufei       3 年 前       2559

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个步骤

  1. 调用 DateTimeOffset.FromUnixTimeSeconds(unix) 传入时间戳创建一个 DateTimeOffset 实例
  2. 然后再调用 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;       
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.