自动将 UTC 日期转换为本地时区

auto convert UTC date to local time zone

我们正在开发一个 ASP.net 应用程序,它以 UTC 格式存储日期和时间。该应用程序将在全球范围内使用。但是每个位置都会 运行 独立的应用程序实例,并且会有自己的数据库。

是否可以在用户查看日期时间值时自动转换日期和时间,而无需在 C# 中获取本地时区(如 EST、CST、PST ...)?

我可以用

DateTime convertTime = TimeZoneInfo.ConvertTimeFromUtc(
    DateTime.UtcNow, 
    TimeZoneInfo.Local);

但想知道我是否可以进行一些应用程序范围的设置(在 web.config 中)或某处...以本地时区格式显示所有 DateTime

在 ASP.Net 应用程序中,TimeZoneInfo.Local 指的是 服务器 的时区 - 而不是用户。通常,将服务器的时区设置为特定的任何内容都是不好的做法。

您所询问的行为已经包含在 DateTime.Now 属性 中,它使用本地时区,与您在代码中显示的方式非常相似。

不,无法使用 web.config 设置或任何其他设置来全局更改本地时区。这是针对每台机器的设置,适用于所有应用程序的系统范围。

您可能会考虑的一种方法是将 UTC 值传递给客户端,并使用客户端 JavaScript 转换为用户的本地时间。但是,如果您要进行服务器端转换,那么您必须明确知道用户的时区。