値を UTC として保存する場合、Javascript を使用せずに現地時間をユーザーに表示することは可能ですか?
3 に答える
サーバー側でクライアントのタイムゾーンを認識する必要があります。典型的なリクエストには、その決定を行うための十分な情報がありません。最も近いのは Accept_Language ヘッダーです。これは手がかりになるかもしれませんが、ほとんど役に立ちません (特に、クライアントが複数のタイムゾーンを持つ国にいる場合)。 .
したがって、ユーザーに自分のタイムゾーンを知らせてから、ログオンまたは Cookie を使用してその情報を保存する必要があります。
vb.net、c#、または使用している.net言語でサーバー側で変換を行うことができます。どこかで現地時間に変換する必要があります。
詳細のない非常に広範な質問をしているため、サーバーでこれを行う方法はお勧めできません。
編集
コメントに基づいて、JavaScript を使用せずにユーザーのタイムゾーンを把握したいという問題があることがわかります。ユーザーが登録するとき、私はいつも自分のタイムゾーンを教えてもらいます。
完璧ではないアプローチの 1 つは、geo-ip ルックアップ サービスを使用することです。このサービスは、ユーザーがどこにいる可能性が最も高いかを示し、言語設定を使用するよりも優れた粒度を提供します。
Think this is the closest you can do:
using System.Globalization;
// get the first language from request (en, fr, ru)
var primaryLanguage = Request.UserLanguages.First().Split(";").First();
// find a culture by this language
var culture = new CultureInfo(primaryLanguage);
// if the culture is neutral, try to find the specific one
if (culture.IsNeutralCulture)
culture = CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(o => o.TwoLetterISOLanguageName == primaryLanguage);
// get the string from a datetime
var datetimeText = culture ? DateTime.Now.ToString(culture) : DateTime.Now.ToString();