2016-11-28 7 views
1

サーバー上の日付をローカルシステムのdatetime形式で表示しようとしていますが、サーバーのdatetime形式を使用しています。 localhostで実行すると正常に動作しますが、サーバで実行した場合、システム日時フォーマットに関係なく、フォーマットはMM/dd/yyyy(USフォーマット)になります。私はすでにこれらを試しましたが、望ましい結果はありません。c#:サーバーのローカルシステム日時フォーマット

string DateTimeFormat = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern 

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate() { }); 
string DateTimeFormat = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern; 

これを達成する他の方法はありますか?

+1

あなたはdt.ToString(「DD/MM/YYYY」)を使用することができます。これにより、日付オブジェクト(dt)がdd/MM/yyyy形式に変換されます。 –

+0

@SouvikGhosh、私は特定のフォーマットは必要ありません。ローカルシステムの日時フォーマットに従い、ローカルフォーマットが変更されたときに変更する必要があります – Sanjay

答えて

0

あなたはCurrentCultureを使用しています。コードはサーバー上で動作しますので、何を期待しましたか。サーバーは、すべての要求に対して魔法のように環境設定を変更することはありません。

サイトを閲覧しているユーザーの優先言語に準拠させたい場合は、Accept-Languageヘッダーが最適です。 This answerこれをASP.NET MVCのCultureInfoに変換する方法の詳細。サーバーがサポートするものとブラウザが送信するものに限られているので、これはやや制限されたアプローチです。サーバーは、ユーザーの嗜好を判断するためにヘッダー情報を要求する以外の方法はありません。要求ヘッダーは、私がISO-8601の日付形式を使用してde-deを優先して実際にエンコードすることはできません。

最も簡単な方法は、リクエストヘッダーに基づいて適切なデフォルトを選択し、それを変更するオプションを提供することです。 JavaScriptを備えたクライアントのマシンでさえ、その情報のほとんどを得ることはできません。 Webページには、OSのユーザー設定にどれくらいの制約があるかという制限があります。したがって、オプトアウトする簡単な方法は、誰もが変更できるように設定を追加することです。

0

ここでは私が探しているものでなければならない別のスレッドへの私のStackOverflowの答えです。

How to get current user timezone in c#

キーは、クライアントがどのタイムゾーンを渡すために取得し、その後、サーバー上の「UTCタイムゾーン」(つまり、常にSQL Serverマシン上GetUTCDate()ではなくGetDate()を使用)で、常にストア日付時刻であります彼らはそこにいる。

次に、あなたは2つを組み合わせるコードのビットが必要です。

(。私の他の記事応答からコードをcut'n'pastingないための謝罪が、それはすでにうまくそこに記載さだ)

関連する問題