【发布时间】:2013-08-14 16:30:41
【问题描述】:
如何为整个应用程序设置通用时区。
因此,即使时区发生更改,应用程序也应按照通用时区显示时间。
那么是否可以设置整个应用程序时区?
【问题讨论】:
-
现在问有点晚了,但请告诉我我的问题如何不清楚。 Garath 完美回答了我的问题。
如何为整个应用程序设置通用时区。
因此,即使时区发生更改,应用程序也应按照通用时区显示时间。
那么是否可以设置整个应用程序时区?
【问题讨论】:
您最好的选择是创建一个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;
【讨论】:
很遗憾,您不能(您可以查看 Jon Skeet 在以下线程中的回复:Setting/Changing an .NET application's TimeZone)。 所以你有两个选择:
DateTime.ToUniversalTime (MSDN description)DateTime 的类并改用它【讨论】:
DateTime.UtcNow 好得多好吗?因为DateTime.Now内部使用DateTime.UtcNow计算当地时间
如何为整个应用设置通用时区?
使用以下代码:
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime universal = zone.ToUniversalTime(DateTime.Now);
【讨论】: