C# 时间戳:获取、转换与运算的代码示例
C# 通过 DateTimeOffset 处理 Unix 时间戳的示例,包含秒级/毫秒级获取、时间戳与日期互转以及天数加减等场景。下面按常见场景整理了 C# 的 4 段示例代码,直接复制即可使用。
获取时间戳
获取当前时刻的 Unix 时间戳,区分秒级与毫秒级两种精度。
// 获取当前时间戳(秒)
long tsSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
// 获取当前时间戳(毫秒)
long tsMillis = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Console.WriteLine($"{tsSeconds} {tsMillis}"); // 获取当前时间戳(秒)
long tsSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
// 获取当前时间戳(毫秒)
long tsMillis = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Console.WriteLine($"{tsSeconds} {tsMillis}"); 时间戳转日期
将 Unix 时间戳还原为人类可读的日期时间字符串,可自定义格式。
// 时间戳(秒)转日期时间
long ts = 1690000000;
DateTime dt = DateTimeOffset.FromUnixTimeSeconds(ts)
.LocalDateTime;
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss")); // 时间戳(秒)转日期时间
long ts = 1690000000;
DateTime dt = DateTimeOffset.FromUnixTimeSeconds(ts)
.LocalDateTime;
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss")); 日期转时间戳
把指定的日期时间转换为 Unix 时间戳,常用于存储与时间计算。
// 日期时间转时间戳(秒)
DateTime dt = DateTime.Parse("2023-07-22 06:26:40");
long ts = new DateTimeOffset(dt).ToUnixTimeSeconds();
Console.WriteLine(ts); // 日期时间转时间戳(秒)
DateTime dt = DateTime.Parse("2023-07-22 06:26:40");
long ts = new DateTimeOffset(dt).ToUnixTimeSeconds();
Console.WriteLine(ts); 时间戳运算
基于时间戳做加减(如加一天),用于到期、倒计时等时间推算。
// 时间戳运算:加 1 天
long ts = 1690000000;
long tomorrow = DateTimeOffset.FromUnixTimeSeconds(ts)
.AddDays(1).ToUnixTimeSeconds();
Console.WriteLine(tomorrow); // 时间戳运算:加 1 天
long ts = 1690000000;
long tomorrow = DateTimeOffset.FromUnixTimeSeconds(ts)
.AddDays(1).ToUnixTimeSeconds();
Console.WriteLine(tomorrow);