1

ASP.NET フォームで日付を使用しています。

UI にフランス語の形式 (日/月/年) で日付を表示し、モデル バインディングを使用してコントローラーで取得したいと考えています。

私はこのモデルプロパティを持っています:

[DisplayFormat(DataFormatString = "{dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime dateAudit { get; set; }

DateTime.Now として開始し、次の形式で表示します。

@Html.TextBox("dateAudit", String.Format("{0:d}", Model.dateAudit.ToShortDateString(), new { @class = "datefield" }))

ええ、私もこれを構成に入れました:

<globalization uiCulture="fr-FR" />

問題は、表示されている日付が 2015 年 3 月 9 日ですが、2015 年 9 月 3 日である必要があることです。

これを修正する方法は?

前もって感謝します

4

2 に答える 2

2

ユーザー出力の場合は、またはCultureInfoを呼び出すときに常に該当する を指定します。String.Formattype.ToString

すなわち。

String.Format(new CultureInf("fr-FR")., "{0:d}", …)

ユーザーの権利を取得しCultureInfo、インスタンスを再利用する方が明らかに良いでしょう。

クライアント アプリケーション (WPF、WinForms など) の場合、既定値は正しい (つまりCurrentCulture.CurrentCulture) である必要があります。ただし、Web の場合は、HTTP リクエストのヘッダーからユーザーの優先ロケールを確認する必要があります (これは begin リクエストで行い、変換をキャッシュして膨大な数のCultureInfoオブジェクトの作成を節約します: flyweight パターンを参照)。

于 2015-03-09T15:36:36.883 に答える
1

d標準の日付と時刻の形式を使用しているためToShortDateString(それらは同一ですCurrentCulture)、あなたのToShortDateStringプロパティはのように見え、M/d/yyyyそれがこの表現を取得する理由です。

解決策として、メソッドを使用して次.ToString()のようにフォーマットできます。

Model.dateAudit.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)

/または、次のような文字をエスケープできます。

Model.dateAudit.ToString("dd'/'MM'/'yyyy")
于 2015-03-09T15:35:54.267 に答える