gpt4 book ai didi

c# - 如何使用 C#/.NET 将日期时间转换为时间戳(忽略当前时区)

转载 作者:IT王子 更新时间:2023-10-29 04:23:07 25 4
gpt4 key购买 nike

如何使用 C# .NET(忽略当前时区)将日期时间转换为时间戳?

我正在使用下面的代码:

private long ConvertToTimestamp(DateTime value)
{
long epoch = (value.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
return epoch;
}

但它根据当前时区返回时间戳值,我需要不使用当前时区的结果。

最佳答案

此刻你正在调用 ToUniversalTime() - 只是摆脱它:

private long ConvertToTimestamp(DateTime value)
{
long epoch = (value.Ticks - 621355968000000000) / 10000000;
return epoch;
}

或者,IMO 更具可读性:

private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
...

private static long ConvertToTimestamp(DateTime value)
{
TimeSpan elapsedTime = value - Epoch;
return (long) elapsedTime.TotalSeconds;
}

编辑:如评论中所述,执行减法时不会考虑您传入的DateTimeKind。您真的应该传入一个 KindUtc 的值,这样它才能工作。不幸的是,DateTime 在这方面有些问题 - 请参阅 my blog post (关于 DateTime 的咆哮)了解更多详情。

您可能想使用我的 Noda Time日期/时间 API,它使一切都更加清晰,IMO。

关于c# - 如何使用 C#/.NET 将日期时间转换为时间戳(忽略当前时区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com