私のWebアプリケーションは、複数の日時形式、つまり、、、をサポートしyyyy-MM-dd
てyyyy.MM.dd
いdd/MM/yyyy
ますMM/dd/yyyy
。最初の2つの形式は完全に機能しますが、他の2つの形式を使用すると、最初の印刷でスラッシュがダッシュに置き換えられ、検証に失敗します。ただし、日付を選択すると、正しい(選択された)形式で出力されます。
私はculturesv-SEを使用しています。
私のWebアプリケーションは、複数の日時形式、つまり、、、をサポートしyyyy-MM-dd
てyyyy.MM.dd
いdd/MM/yyyy
ますMM/dd/yyyy
。最初の2つの形式は完全に機能しますが、他の2つの形式を使用すると、最初の印刷でスラッシュがダッシュに置き換えられ、検証に失敗します。ただし、日付を選択すると、正しい(選択された)形式で出力されます。
私はculturesv-SEを使用しています。
( Kendo UIの経験はないが、他の日付/時刻APIの経験がある)「/」は「カルチャ固有の日付区切り文字」として扱われているのではないかと思います。「文化に関係なく、正確にスラッシュ」が必要な場合は、それを回避する必要があります。
エスケープがどのように実行されるかはライブラリによって異なりますが、多くの場合、引用符を使用するだけです。
dd'/'MM'/'yyyy
MM'/'dd'/'yyyy
Jonが彼の回答で述べているように、これは.NET/
カスタム日付形式の特殊文字であることについてです。
/
剣道で作業する場合、特殊文字として使用されないため、これは混乱を招きます。
クライアント側とサーバー側で別々のフォーマット文字列を使用することが答えになるはずですが、残念ながらMVCのTelerik UI(クライアント側でKendoを使用)では、KendoのMVCヘルパーでクライアント側とサーバー側の両方で単一のフォーマット文字列が使用されます。
たとえば、日付形式が「dd-MM-yyyy」(Windowsの地域設定で設定)のサーバーとビューモデルの場合:
[Display(Name="Date")]
[UIHint("Date")]
[DisplayFormat(DataFormatString = Constants.DateFormat, ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }
(Constants.DateFormat
"dd / MM / yyyy")次に、エディターテンプレート( "Date.cshtml")があります。
@(Html.Kendo().DatePickerFor(m => m)
解析できないため、最初の日付表示「29-05-2015」とJavaScriptエラーが発生します。
使用の回避策として
@(Html.Kendo().DatePickerFor(m => m)
.ParseFormats(new[] { "dd-MM-yyyy", Constants.DateFormat}))
生成されたHTMLの形式は間違っていますが、JavaScriptは少なくともそれを理解できます。(もちろん、これを利用DateTimeFormatInfo.DateSeparator
して代替フォーマットを動的に構築する必要があります。)