2016-07-22 4 views
4

私はDateTime.Now.ToString("d", new CultureInfo("nl-NL"))を使用しています。ローカルIIS WebアプリケーションでDateTime.ToString( "d"、cultureInfo)の出力がIISとコンソールアプリケーションで異なる

、出力が正しい:コンソールアプリケーションで

22-7-2016 

、フレームワークは、国際/培養不変日付表記選択:

2016-07-22 

をこれがオンになっています同じマシンで、まったく同じコードです。私はブレークポイントを配置し、すべての入力をチェックし、その時点で直接ウィンドウでコマンドを実行しようとしました。どんな状況においても、コンソールアプリケーションはそれを間違ったものにします。

誰でも何が原因なのか説明できますか?

+1

私たちがテストで使用しているのと同じコードを実行していることを確認できるように、コンソールアプリケーションのフルコードを含めることができますか?私の短いテストでは何の問題もないことを示しています... – Chris

+0

DateTimeとは何ですか? System.DateTimeクラスには静的ToStringメソッドがありません。したがって、指定したコードは、DateTimeまたはToString拡張メソッドと呼ばれる変数を作成しない限りコンパイルされません。 –

+1

'new CultureInfo(" nl-NL "、false)' – PetSerAl

答えて

3

IISとコンソールアプリケーションは異なるユーザーアカウントで実行されます。日付形式をカスタマイズした場合(たとえば、地域コントロールパネルを使用して)、CultureInfoフォーマッタは、あなたのアカウントでのみそのカスタマイズを使用します。

あなたはユーザー設定を無視CultureInfoを作成することができます。

new CultureInfo("nl-NL", useUserOverride: false) 

あなたは、あなたのアカウントの地域設定をリセット:ファイル名を指定して実行>intl.cpl>ドロップダウン>その他の設定>リセットでNLロケールを選択します。

+0

@SonerGönül私が私の答えで言ったように、 'CultureInfo'はWindowsの設定によって影響を受けます。絶対的ではありません。自分で試してみてください。 –

+0

ロケールの変更を意味するわけではありません。特定のロケールの実際のフォーマットを変更することを意味していました。それはコントロールパネルにあります。 –

+0

@SonerGönülこれらの設定はアカウントごとです。それが結果を変えると思う唯一の選択肢です。 –

-1

私はあなたがこれを試みることができるVS 2012年には、.NET 4.5でコンソールとWebアプリケーションの両方に

を同じ結果が得?

yourDateTime.ToString("dd-MM-yyyy", new System.Globalization.CultureInfo("nl-NL")); 
+1

明示的なフォーマット文字列を使用すると、 "d"を使用する目的に勝る。 – CodeCaster

+1

テストのためだけです。私は "あなたは何をしようとしていますか"と言って、何が起こるかを見て、その問題を特定しました。 –

+0

それは問題ありませんが、それは答えではなく、何も証明しません。 – CodeCaster

関連する問題