如何为整个应用程序设置通用时区。
因此,即使更改了时区,应用程序也应该按照通用时区显示时间。
那么是否可以设置整个应用程序时区?
不幸的是,您不能(您可以在以下线程中查看 Jon Skeet 的响应:设置/更改 .NET 应用程序的 TimeZone)。所以你有两个选择:
DateTime.ToUniversalTime
(MSDN 描述)DateTime
并使用它的类您最好的选择是创建一个localization
类,它将在您喜欢的时区返回 DateTime。在你的应用程序中,你应该使用这个类,而不是DateTime.Now
在你想显示日期和时间的时候:
class Localization
{
public Localization(string timeZoneId = "UTC")
{
TimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
}
public virtual TimeZoneInfo TimeZone { get; set; }
public DateTime Now
{
get
{
return TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZone)
}
}
}
如果您的应用程序中只需要一个静态时区,您可以将上述类设为单例。
var locale = new Localization(); // default is UTC, provide yours.
var now = locale.Now;
如何为整个应用程序设置通用时区?
使用以下代码:
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime universal = zone.ToUniversalTime(DateTime.Now);