gpt4 book ai didi

datetime - 我应该使用 DateTime UTC 进行国际应用吗

转载 作者:行者123 更新时间:2023-12-03 06:01:39 24 4
gpt4 key购买 nike

我正在编写一个 MVC 5 互联网应用程序,该应用程序正在部署到 Azure 网站。该应用程序将在国际上使用,我想知道存储任何日期时间值是否应该使用 UTC 时间?

这是一个示例:我有一个对象,它具有开始日期时间值和结束日期时间值。这些值由用户设置并用于确定是否应向用户显示数据。如果当前日期时间值介于开始日期时间和结束日期时间之间,则会显示数据。

因为我的应用程序将在国际上使用,并且存在不同的时区,所以我应该将开始日期时间值和结束日期时间值存储为具有 UTC 的 DateTime 对象,还是使用标准 DateTime 值需要吗?我是否需要担心设置和显示不同时区的 DateTime 值,或者是否将其合并到 DateTime 对象中?

提前致谢。

编辑

编辑存储为 UTC 的日期时间时怎么样。

如果我有一个以 UTC 形式存储在对象中的 DateTime,并且用户想要更改此值,当我需要将 DateTime(显示为 .ToLocalTime())转换回 UTC DateTime编辑后将此值存储回数据库吗?

编辑2

您能快速浏览一下我编写的这些函数以确保编码正确吗?

public DateTime ConvertUTCDateTimeToLocalTime(DateTime utcDateTime)
{
DateTime convertedDate = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc);
return convertedDate.ToLocalTime();
}

public DateTime ConvertLocalDateTimeToUniversalTime(DateTime localDateTime)
{
DateTime convertedDate = DateTime.SpecifyKind(localDateTime, DateTimeKind.Local);
return convertedDate.ToUniversalTime();
}

public DateTime ConvertUTCDateTimeToLocalTime(string utcDateTime)
{
DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(utcDateTime.ToString()), DateTimeKind.Utc);
return convertedDate.ToLocalTime();
}

public DateTime ConvertLocalDateTimeToUniversalTime(string localDateTime)
{
DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(localDateTime.ToString()), DateTimeKind.Local);
return convertedDate.ToUniversalTime();
}

最佳答案

一般来说,您应该更喜欢使用 DateTime.UtcNow在你的后端。第一个优点是您不必关心时区,第二个优点是您不必对夏令时进行任何计算(更多信息请参阅 this article )。 .NET 为您提供了强大的功能,您不必太关心上面提到的两点。另一方面,您永远不应该在前端显示 UTC 时间。这可能会惹恼您的用户,但是 .NET 的功能就可以发挥作用了。如果您有 UTC 日期,您可以轻松地将其转换为本地时间,以便通过以下方式将其显示给您的用户:

DateTime convertedDate = DateTime.SpecifyKind(
DateTime.Parse(dateStr),
DateTimeKind.Utc);
DateTime dt = convertedDate.ToLocalTime();

该片段取自 Drew Noakes 在 this thread 上的回答,这是关于如何将日期转换为本地时间的精彩讨论。

编辑

关于您的编辑:是的,您必须这样做。否则日期将以本地时间存储。

关于datetime - 我应该使用 DateTime UTC 进行国际应用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28104885/

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