0

この形式の dd mmm yyyy で 2 つの日付を比較したいのですが、形式が原因でバリデータの比較が機能せず、カスタム バリデータはサーバー側の検証です。クリネ側の検証をお願いしたいです。それを行う最良の方法は何ですか?例やリンクがあれば教えてください。

これを行うことができるajax、jquery、またはjavascriptで利用可能なオプションがあるかどうかわかりませんか?

乾杯

4

2 に答える 2

1

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」になります。

于 2012-04-26T14:59:32.770 に答える
0

日付の比較に使用できる簡単なクラスを次に示します。関数は、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

于 2012-04-26T15:39:56.050 に答える