📜  c# unix timestamp - C# (1)

📅  最后修改于: 2023-12-03 14:59:41.045000             🧑  作者: Mango

概述

在C#编程过程中,Unix 时间戳(Unix Timestamp)可能涉及到时间戳的转换、计算等操作。本文将简要介绍 C# 中的 Unix 时间戳,并提供相关的代码示例。

Unix 时间戳

Unix 时间戳是表示从 Unix 纪元(1970年1月1日00:00:00 UTC)起经过的秒数,它是一种时间值的表示方式。在 C# 中,可以使用预定义的 DateTime 类型,其自 0001 年 1 月 1 日起的时间戳表示方式来操作 Unix 时间戳。

示例代码:

DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime currentTime = DateTime.UtcNow;

// 获取当前时间戳
long currentTimestamp = (long)(currentTime - unixEpoch).TotalSeconds;
Console.WriteLine(currentTimestamp);

// 将 Unix 时间戳转为 DateTime 类型
long unixTimestamp = 1577687293;
DateTime timestampDateTime = unixEpoch.AddSeconds(unixTimestamp);
Console.WriteLine(timestampDateTime.ToString("yyyy-MM-dd HH:mm:ss"));

输出:

1577687293
2019-12-30 09:08:13

时间戳转换

在 C# 中,我们可能需要将 Unix 时间戳与其他时间格式相互转换。以下是一些常用的转换方法:

Unix 时间戳转为日期字符串
long timestamp = 1577687293;
DateTime dt = unixEpoch.AddSeconds(timestamp);
string dateStr = dt.ToString("yyyy-MM-dd HH:mm:ss");
日期字符串转为 Unix 时间戳
string dateStr = "2022-02-22 22:22:22";
DateTime dt = DateTime.ParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
long timestamp = (long)(dt - unixEpoch).TotalSeconds;
DateTime 类型转为 Unix 时间戳
DateTime currentTime = DateTime.UtcNow;
long currentTimestamp = (long)(currentTime - unixEpoch).TotalSeconds;
Unix 时间戳转为指定格式的日期字符串
long timestamp = 1577687293;
DateTime dt = unixEpoch.AddSeconds(timestamp);
string dateStr = dt.ToString("ddd MMM dd yyyy HH:mm:ss 'GMT+0800 (CST)'", new CultureInfo("en-US"));

输出:

Mon Dec 30 2019 09:08:13 GMT+0800 (CST)

时间戳计算

在 C# 中,我们可以使用 TimeSpan 类型对两个时间戳进行计算,例如计算两个时间戳的时间差等。

示例代码:

long timestamp1 = 1577687293;
long timestamp2 = 1577694693;

TimeSpan timeSpan = TimeSpan.FromSeconds(timestamp2 - timestamp1);
Console.WriteLine(timeSpan.TotalHours);

输出:

2.01638888888889

小结

本文简要介绍了 C# 中的 Unix 时间戳,演示了如何将 Unix 时间戳转换为其他时间格式,如何计算时间戳等。希望本文能够对 C# 开发者们有所帮助。