2016-10-03 5 views
0

私は.NET c#を持っており、エンドユーザに表示されるすべてのdatetimeフィールドのローカル時刻をユーザのローカル時刻にする必要があります。 これは、日時が表示されている各場所を変更しなくても、これをグローバルに処理する方法ですか?c#グローバルにアプリケーション間の日付時刻をローカライズ

システム時刻はUTCに設定され、すべてのデータが保存され、UTCとして返されます。

の例では、アプリケーションに返され、システム内の時間は1600hrs UTCであれば、東部時間に座って、ユーザが1200hrsとして、この時間を確認する必要があり、あること、そして私がきた

でユーザに座ってしまいますJSを使用して、いくつかの解決策を見て、これはあなたがユーザーのローカルを追跡するために必要な支援

+0

私には「システム時間はUTCに設定されています」とは、UTC *が現地時間であることを意味します* - あなたが探している他の現地時間は?また、 "IIS"はやや奇妙なタグです - これは "これはカスタム非AS.NetフレームワークのWebサーバーコードです"ということを意味するかもしれません - あなたは[編集]してそのことを明確にしたいかもしれません。 –

答えて

1

ため

おかげで、Cookieまたはデータベースに、あなたが2つの値を格納する必要が私たちのためにオプションではありませんi18n(国際化)のお手伝いをしてください。何かをフォーマットする必要があるときは、この2つのクラスのC#を使用してください:TimeZoneInfoCultureInfoの場合は、最初に国のタイムゾーンが必要で、2番目にタイムゾーンが必要です(TimeZoneInfo.GetSystemTimeZones()ですべてのタイムゾーンが表示されます。次に、このクラスを使用してテキストをフォーマットします)。

例:

var dateTime = TimeZoneInfo.ConvertTimeFromUtc(client.ActivatedOn.Value.UtcDateTime, timeZoneInfo); 

そして、(例えば)ビュー内:

あなたがなります。これにより
@dateTime.ToString("G", cultureInfo) 

var timeZoneInfo = string.IsNullOrEmpty(Settings.CountryTimezone) ? 
     TimeZoneInfo.Local : 
     TimeZoneInfo.FindSystemTimeZoneById(Settings.CountryTimezone); 
var cultureInfo = string.IsNullOrEmpty(Settings.CountryCulture) ? 
     CultureInfo.CurrentCulture : 
     CultureInfo.GetCultureInfo(Settings.CountryCulture); 

その後、あなたは、これがこのようなオブジェクトを使用ユーザーには正しい日付だけでなく(国の夏時間にもかかわらず)、ローカル形式で表示されます。

関連する問題