この形式の dd mmm yyyy で 2 つの日付を比較したいのですが、形式が原因でバリデータの比較が機能せず、カスタム バリデータはサーバー側の検証です。クリネ側の検証をお願いしたいです。それを行う最良の方法は何ですか?例やリンクがあれば教えてください。
これを行うことができるajax、jquery、またはjavascriptで利用可能なオプションがあるかどうかわかりませんか?
乾杯
この形式の dd mmm yyyy で 2 つの日付を比較したいのですが、形式が原因でバリデータの比較が機能せず、カスタム バリデータはサーバー側の検証です。クリネ側の検証をお願いしたいです。それを行う最良の方法は何ですか?例やリンクがあれば教えてください。
これを行うことができるajax、jquery、またはjavascriptで利用可能なオプションがあるかどうかわかりませんか?
乾杯
JavaScript は からネイティブに変換するためMMM dd, yyyy
、これは 1 つのアプローチになります。
var date1Str = "09 Sep 2011";
var date2Str = "04 May 2012";
var dateParts = date1Str.split(" ");
var newDateStr = dateParts[1] + " " + dateParts[0] + ", " + dateParts[2];
var date1 = new Date( newDateStr );
var dateParts = date2Str.split(" ");
var newDateStr = dateParts[1] + " " + dateParts[0] + ", " + dateParts[2];
var date2 = new Date( newDateStr );
if ( date1 > date2 )
...
JavaScript で日付の解析を行うためのリンクがネット上にたくさんあり、それを簡単にするライブラリがたくさんあります。文化が役割を果たしていることを忘れないでください。「Oct」は英語ですが、ドイツ語では「Okt」になります。
日付の比較に使用できる簡単なクラスを次に示します。関数は、convert
フォーマットに対応するように調整されています。
<script type="text/javascript">
var dates = {
convert:function(d) {
return (
d.constructor === Date ? d :
d.constructor === Array ? new Date(d[1],d[0],d[2]) :
d.constructor === Number ? new Date(d) :
d.constructor === String ? new Date(d) :
typeof d === "object" ? new Date(d.year,d.month,d.date) :
NaN
);
},
compare:function(a,b) {
return (
isFinite(a=this.convert(a).valueOf()) &&
isFinite(b=this.convert(b).valueOf()) ?
(a>b)-(a<b) :
NaN
);
},
inRange:function(d,start,end) {
return (
isFinite(d=this.convert(d).valueOf()) &&
isFinite(start=this.convert(start).valueOf()) &&
isFinite(end=this.convert(end).valueOf()) ?
start <= d && d <= end :
NaN
);
}
}
</script>
このクラスのクレジットは @some に属します: https://stackoverflow.com/a/497790/879420