質問

何らかの理由で、サーバー上の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ディレクティブでデフォルトカルチャを設定できます。

マスターページがさまざまなカルチャ用に設定され、ページとコントロールがそこから継承されるさまざまなアプリがあります。

サーバーのコントロールパネルの地域設定で設定を変更することにより、短い日付形式を操作できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top