日付の書式設定のためにASP.NETのデフォルトカルチャを変更する
-
06-07-2019 - |
質問
何らかの理由で、サーバー上のASP.NETコードが MM / dd / yyyy ではなく dd / MM / yyyy の形式を返すようになりました< strong> DateTime.ToString(&quot; g&quot;)。
すべての&quot; g&quot;を置き換えるのではなく、具体的なフォーマット文字列またはCultureInfo引数を持つフォーマット文字列、デフォルトの「短い日付」をアプリケーション全体でオーバーライドする方法はありますか?フォーマット?
私の好みは実際には「yyyy-MM-dd」ですデフォルトの形式ですが、すべてのユーザーが米国にいるため、米国中心のMM / dd / yyyyで生活できます。
明確化:デフォルトカルチャ全体を変更したくない。これは、通貨や、数値の書式設定での小数/コンマの使用などに影響を与える可能性がある。
ToString(&quot; g&quot;)呼び出しをオーバーライドして、ISO / IEC 8824日付形式(&quot; yyyy-MM-dd&quot;)を使用したいだけです。
ToString()の呼び出しごとに強制的にCultureInfoを実行するようにコード全体を検索および置換できますが、それは最も保守性の高いソリューションではありません。
現在の解決策は、日付をフォーマットするための静的メソッドを定義し、コードベース全体でToString()の代わりにそれを呼び出すことです。しかし、コードのどこかでそうするのを忘れた場合、再び間抜けな日付になります。
解決 2
カルチャの設定はオプションではなく、サーバーの地域設定にも依存していませんでした。
日付をフォーマットするためのユーティリティ関数を書くことになりました:
Public Shared Function FormatShortDate(ByVal d As Date) As String
If d=#1/1/0001# Then Return ""
If d=#1/1/1900# Then Return ""
'ISO/IEC 8824 date format
Return d.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)
End Function
日付をユーザーにプッシュする必要があるすべての場所でこれを呼び出します。また、デフォルト(&quot; magic&quot;)日付の表示も処理します。
FormatShortDateTimeおよびFormatLongDateTimeについて、同様の関数をいくつか作成しました。
他のヒント
web.config(アプリケーションレベル)、Pageディレクティブ、またはcontrolディレクティブでデフォルトカルチャを設定できます。
マスターページがさまざまなカルチャ用に設定され、ページとコントロールがそこから継承されるさまざまなアプリがあります。
サーバーのコントロールパネルの地域設定で設定を変更することにより、短い日付形式を操作できます。