📅  最后修改于: 2023-12-03 15:13:48.752000             🧑  作者: Mango
有时候我们需要在 C# 代码中将 DateTime
类型转换为 Unix 时间戳。此时可以使用以下方法:
public static long ConvertToTimestamp(DateTime value)
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var elapsedTime = value.ToUniversalTime() - epoch;
return (long)elapsedTime.TotalSeconds;
}
这个方法将接收一个 DateTime
类型的参数,并返回一个 Int64
类型的 Unix 时间戳,单位为秒。
在这个方法中,我们首先定义了一个表示 Unix 纪元时间的 DateTime 实例。在这个方法中,我们使用了 ToUniversalTime()
方法将传入的时间转换为 UTC 时间,以便在计算时间戳之前将其与 Unix 时间戳的 UTC 基准时间(1970 年 1 月 1 日)对齐。
如果要转换当前时间,则可以使用以下方式:
var unixTimestamp = ConvertToTimestamp(DateTime.Now);
这将返回当前时间的 Unix 时间戳。
注意:Unix 时间戳是以 UTC 标准时间为基准的。如果你需要基于本地时区计算 Unix 时间戳,则可以使用以下代码:
public static long ConvertToTimestamp(DateTime value)
{
return (long)value
.ToUniversalTime()
.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
.TotalSeconds;
}
在这个方法中,我们先使用 ToUniversalTime()
将本地时间转换为 UTC 时间,然后再计算时间戳。
请注意,如果要将 Unix 时间戳转换回 C# 的 DateTime
类型,则需要使用以下方式:
public static DateTime ConvertFromTimestamp(long timestamp)
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return epoch.AddSeconds(timestamp);
}
这将接收一个 Int64
类型的 Unix 时间戳,返回对应的 DateTime
类型。