2016-10-03 45 views
0

我有一個.NET C#,並且需要獲取顯示給最終用戶的每個日期時間字段的本地時間,作爲用戶的本地時間。 有沒有辦法來處理這個全球w/o不得不修改每個地方日期時間顯示?c#全局本地化跨應用程序的日期時間

系統時間設置爲UTC,並且所有數據都存儲並作爲UTC返回。

一個例子是,如果在返回給應用程序的系統的時間1600hrs UTC,坐在東部時間用戶應該看到這次作爲1200hrs和用戶坐在

我看到了一些解決方案,使用JS,但這不是我們

感謝您的幫助

+0

非常不清楚你在問什麼......給我「系統時間設置爲UTC」意味着UTC *是當地時間* - 你正在尋找什麼其他當地時間?另外「IIS」有點奇怪的標籤 - 可能你的意思是「這是定製的非ASP.Net框架中的Web服務器代碼」 - 你可能想要發佈並澄清。 –

回答

1

你需要跟蹤的選項,用戶的地方,在cookie或數據庫,則需要兩個值存儲幫助你在i18n(國際化),然後,當你需要格式化的東西使用這兩類c#:TimeZoneInfoCultureInfo,第一個需要國家時區,第二個需要時區(您可以在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) 

有了這個,你會不僅向用戶顯示正確的日期(儘管在該國的夏令時),而是以本地格式顯示。

相關問題