2

値を UTC として保存する場合、Javascript を使用せずに現地時間をユーザーに表示することは可能ですか?

4

3 に答える 3

2

サーバー側でクライアントのタイムゾーンを認識する必要があります。典型的なリクエストには、その決定を行うための十分な情報がありません。最も近いのは Accept_Language ヘッダーです。これは手がかりになるかもしれませんが、ほとんど役に立ちません (特に、クライアントが複数のタイムゾーンを持つ国にいる場合)。 .

したがって、ユーザーに自分のタイムゾーンを知らせてから、ログオンまたは Cookie を使用してその情報を保存する必要があります。

于 2009-05-21T16:10:15.313 に答える
0

vb.net、c#、または使用している.net言語でサーバー側で変換を行うことができます。どこかで現地時間に変換する必要があります。

詳細のない非常に広範な質問をしているため、サーバーでこれを行う方法はお勧めできません。

編集

コメントに基づいて、JavaScript を使用せずにユーザーのタイムゾーンを把握したいという問題があることがわかります。ユーザーが登録するとき、私はいつも自分のタイムゾーンを教えてもらいます。

完璧ではないアプローチの 1 つは、geo-ip ルックアップ サービスを使用することです。このサービスは、ユーザーがどこにいる可能性が最も高いかを示し、言語設定を使用するよりも優れた粒度を提供します。

于 2009-05-21T16:05:05.293 に答える
0

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();
于 2009-05-21T16:26:00.260 に答える