1

何らかの理由で、 DateTime.ToString( "g")を使用すると、サーバー上のASP.NETコードがMM / dd/ yyyyではなくdd/MM/yyyyの形式を返すようになりました。

すべての「g」フォーマット文字列を具体的なフォーマット文字列またはCultureInfo引数に置き換えるのではなく、アプリケーション全体でデフォルトの「短い日付」フォーマットをオーバーライドする方法はありますか?

私の好みは実際にはデフォルトの形式として「yyyy-MM-dd」ですが、すべてのユーザーが米国にいるので、米国中心のMM / dd/yyyyで生活できます。

明確化:デフォルトのカルチャ全体を変更したくありません。これは、通貨や数値のフォーマットでの小数/カンマの使用などに影響を与える可能性があります。

ToString( "g")呼び出しをオーバーライドして、ISO / IEC 8824日付形式( "yyyy-MM-dd")を使用したいだけです。

コード全体を検索して置換し、すべてのToString()呼び出しでCultureInfoを強制することはできますが、それが最も保守しやすいソリューションであるとは思えません。

私の現在の解決策は、日付をフォーマットするための静的メソッドを定義し、コードベース全体でToString()の代わりにそれを呼び出すことです。しかし、繰り返しになりますが、コードのどこかでそうするのを忘れると、また間抜けな日付になります。

4

3 に答える 3

1

デフォルトのカルチャは、web.config (アプリケーション レベル)、Page ディレクティブ、またはコントロール ディレクティブで設定できます。

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

于 2009-06-23T19:42:20.877 に答える
0

カルチャの設定はオプションではなく、サーバーの地域設定にも依存していませんでした。

最終的に、日付をフォーマットするためのユーティリティ関数を作成しました。

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

ユーザーに日付をプッシュする必要があるすべての場所でこれを呼び出します。また、デフォルトの (「魔法の」) 日付の表示も処理します。

FormatShortDateTime と FormatLongDateTime の同様の関数をいくつか書きました。

于 2009-07-23T20:58:31.457 に答える
-1

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

于 2009-07-17T19:50:45.237 に答える