2011-12-29 10 views
13

私はStartDateをフォーマットするには、次のコードDisplayFormatのDataFormatStringが "/"(スラッシュ)を " - "(ダッシュ)に変更するのはなぜですか?

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

// View 
@Html.EditorFor(model => model.StartDate) 

を使用していますが、結果はxx-xx-xxxxの代わりxx/xx/xxxxです。これをどうすれば解決でき、常にxx/xx/xxxx形式を使用できますか?

UPDATE:en-USに文化を変えるには動作するようです:

var culture = new CultureInfo(userCulture); 
System.Threading.Thread.CurrentThread.CurrentCulture = "en-US"; 
System.Threading.Thread.CurrentThread.CurrentUICulture = "en-US"; 

が、私は異なる文化を使用することができると私はまだで日付を表示したいので、このは解決ではありません別の方法。

日付がdd-MM-yyyyと表示されている場合は、上記のようにDisplayFormatを使用しても効果はなく、日付はdd/MM/yyyyのように表示されません。

+0

「私は異なる文化を使用しているかもしれませんが、私はまだ別の方法で日付を表示したいのですか? –

+0

現在のユーザーがカルチャ「pt-PT」を使用しているとしたら、DisplayFormatは「dd-MM/yyyy」のように表示したいときに「dd-MM-yyyy」に変更します( – Dryadwoods

+0

)。ユーザーの文化によってダッシュが区切り記号になっているとされている場合は、スラッシュの使用を主張しているというのは少し不思議です。 –

答えて

25

使用DataFormatString = @"{0:dd\/MM\/yyyy}"代わりを与える必要があることをDataFormatString = "{0:d}"

に変更することができます。 /は、現在のカルチャのデフォルトの日付区切り文字に置き換えられる文字を識別するため、その文字をフォーマットのリテラルとして使用するには、その文字をエスケープする必要があります。

この方法では、現在のカルチャの日付区切り文字を動的に使用する形式ではなく、固定形式を使用します。 /文字をエスケープする

代替が可能:DataFormatString = "{0:dd'/'MM'/'yyyy}"

+1

ありがとうございます、これはローカルマシンで動作しますが、私たちのウェブサイトは別の国でホストされていますので、 'MM/dd/yyyy'形式でなければなりません。 'dd/MM/yyyy'形式を受け入れますか? – stom

0

は、あなたはあなたのMM/DD /年の短い日付パターン

+0

Nop、まだ同じ結果:Pとにかく感謝。 – Dryadwoods

+0

ちょうど10以下であれば月と日の1桁を与えます –

+0

DataFormatString = "{0:MM/dd/yyyy}"について –

2

変更、サーバーの地域設定の短い日付形式スラッシュなどを使用しますyyyy/MM/dd
これは私の問題を解決しました。

+0

コメントをいただきありがとうございますが、サーバー/ファーム/クラウドはいくつかの異なるプロジェクトを「提供」する可能性があるため、適切な解決策ではありません。また、問題のWebアプリケーションは複数の文化機能を提供する可能性があります。 – Dryadwoods

関連する問題