You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET 5 如何获取精确到微秒的Unix时间戳

.NET 5 微秒级Unix时间戳实现方案

.NET 5 官方仅内置了ToUnixTimeMilliseconds()方法用于获取毫秒级Unix时间戳,微秒级精度的原生API为.NET 6及更高版本新增,.NET 5环境可通过手动计算时间差的方式实现对应能力。


实现方式

1. 直接获取当前微秒级时间戳

// 定义Unix时间戳的纪元起始时间(UTC时区)
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

// 计算当前UTC时间与纪元时间的差值,转换为微秒数
long unixTimeMicroseconds = (long)(DateTime.UtcNow - UnixEpoch).TotalMicroseconds;

低版本兼容方案:如果运行环境不支持TotalMicroseconds属性,可通过Tick计算:1微秒等于10个Tick,代码改为:

long unixTimeMicroseconds = (DateTime.UtcNow - UnixEpoch).Ticks / 10;

2. 封装为扩展方法(对齐官方API使用风格)

可以封装为DateTimeOffset的扩展方法,和官方提供的ToUnixTimeMilliseconds()用法保持一致:

public static class DateTimeOffsetExtensions
{
    private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    
    /// <summary>
    /// 获取当前DateTimeOffset对应的微秒级Unix时间戳
    /// </summary>
    public static long ToUnixTimeMicroseconds(this DateTimeOffset dateTimeOffset)
    {
        return (long)(dateTimeOffset.UtcDateTime - UnixEpoch).TotalMicroseconds;
    }
}

// 调用示例
long microsecondStamp = DateTimeOffset.UtcNow.ToUnixTimeMicroseconds();

内容的提问来源于stack exchange,提问作者gshpychka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:02