C#中DateTime.Ticks属性及Unix时间戳转换

640?wx_fmt=png

DateTime.Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以来所经历的 100 纳秒数,即Ticks的属性为100纳秒(1Ticks = 0.0001毫秒)。

Unix时间戳:是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

1秒    = 1000毫秒

1毫秒 = 1000微妙

1微秒 = 1000纳秒

因此, 1毫秒 = 10000纳秒


2.DateTime变量与时间戳的相互转换

在实际使用中经常需要精确到毫秒,因此这里下面两个函数的使用单位都是“毫秒”,若要转换成“秒”,可以再除以或乘以1000。

/// <summary>
/// 获取1970-01-01至dateTime的毫秒数
/// </summary>
public long GetTimestamp(DateTime dateTime)
{
    DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    return (dateTime.Ticks - dt1970.Ticks) / 10000;
}

/// <summary>
/// 根据时间戳timestamp(单位毫秒)计算日期
/// </summary>
public DateTime NewDate(long timestamp)
{
    DateTime dt1970 = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    long t = dt1970.Ticks + timestamp * 10000;
    return new DateTime(t);
}


posted @   天使不哭  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示