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
相关产品推荐
相关产品推荐

