你需要跟踪的选项,用户的地方,在cookie或数据库,则需要两个值存储帮助你在i18n(国际化),然后,当你需要格式化的东西使用这两类c#:TimeZoneInfo和CultureInfo,第一个需要国家时区,第二个需要时区(您可以在TimeZoneInfo.GetSystemTimeZones()
之间看到所有时区,然后使用这些类来设置文本的格式。
一个例子:
var timeZoneInfo = string.IsNullOrEmpty(Settings.CountryTimezone) ?
TimeZoneInfo.Local :
TimeZoneInfo.FindSystemTimeZoneById(Settings.CountryTimezone);
var cultureInfo = string.IsNullOrEmpty(Settings.CountryCulture) ?
CultureInfo.CurrentCulture :
CultureInfo.GetCultureInfo(Settings.CountryCulture);
然后使用这个对象是这样的:
var dateTime = TimeZoneInfo.ConvertTimeFromUtc(client.ActivatedOn.Value.UtcDateTime, timeZoneInfo);
而且在(比如)一个观点:
@dateTime.ToString("G", cultureInfo)
有了这个,你会不仅向用户显示正确的日期(尽管在该国的夏令时),而是以本地格式显示。
非常不清楚你在问什么......给我“系统时间设置为UTC”意味着UTC *是当地时间* - 你正在寻找什么其他当地时间?另外“IIS”有点奇怪的标签 - 可能你的意思是“这是定制的非ASP.Net框架中的Web服务器代码” - 你可能想要发布并澄清。 –