我们正在开发一个 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 转换为用户的本地时间。 但是,如果您要进行服务器端转换,则必须明确知道用户的时区。