2017-10-13 12 views
2

私はここで非常に奇妙なものがあります。プログラムはWindowsマシンの日付形式に従いません(どこかで上書きできますか?)

シンプルなWindowsフォームアプリケーションでは、私は、次のC#コードを書く

MessageBox.Show("Todays date is: "+DateTime.Today.ToShortDateString()); 

これは通常、ちょうど(地域設定の)ウィンドウで指定された形式で日付を表示実行します。 (私のマシンではデンマーク地方に設定されているので、日付はdd-MM-yyyy => 13-10-2017と表示されます)これは予想されます。

しかし、私は顧客のサーバー(Windows Server 2012)がありません。セットアップでは、Windowsのリージョン設定は私のようです(dd-MM-yyyy)が、上記のコードはMM/dd/yyyy => 10/13/2017と表示されていますが、これはアメリカのフォーマットです。

私はこのことを理解しておらず、このサーバー上の一部のWindowsユーザー(いくつかは形式をウィンドウ内の時計として表示し、その他は不変の形式で表示しています)についてさらに謎を解き明かします。

私は、ユーザーレベルでオーバーライドできるものは見つかりませんでしたが、何らかの種類の.NET設定がある場合はGoogleで検索しています。

コードには、カルチャと特別なものは何もありません(ファイル>新規プロジェクト> Winform [Targeting .net 4.5]と上記のコード行のみ)。

+0

Windows設定を尊重しますか?ユーザーが「en-US」を選択した場合はどうなりますか?あなたは[danish localeを強制する]ことができます(https://stackoverflow.com/q/468791/1997232)。 – Sinatr

+0

私はここで何かを強制することを決して望んでいません。私は自分のプログラムがWindows地域の設定で選択されているものに従うことを願っています – RWJ

+0

そのサーバーでコードが実行されていますか?そのサーバーの実際の地域が正しく設定されているのか、それとも単に表示形式ですか? 2つは異なる可能性があります。 – DonBoitnott

答えて

1

ToString()メソッドを使用してみましたか?

DateTime.Today.ToString(CultureInfo.InvariantCulture) 

結果:10/13/2017 00:00:00

DateTime.Today.ToString(CultureInfo.CurrentCulture); 

結果:13.10.2017 00:00:00

これは私が私の(ドイツの)マシン上で経験するものです。

+0

ToShortDateStringもカルチャを行い、指定されていないカルチャーは現在のカルチャです。問題は、それがWindowsのタスクバーでクロックで使用されているのにもかかわらず、デフォルトが間違っている(不変) – RWJ

関連する問題