2

私はこの問題を広範囲に検索してきましたが、これまでに見つけたコードはどれも機能しませんでした。

たとえば、そうでmm/dd/yyはない形式の 2 つの日付があります。dd/mm/yy11/30/2012

次に、次のスクリプトを使用します。

if ( jQuery("#book_room_type").val() == "La Maison" ) {
    Date.prototype.DaysBetween = function() {  
        var intMilDay = 24 * 60 * 60 * 1000;  
        var intMilDif = arguments[0] - this;  
        var intDays = Math.floor(intMilDif/intMilDay);  
        return intDays;  
    }  
    var d1 = new Date(jQuery("#dateto").val());  
    var d2 = new Date(jQuery("#datefrom").val());  
    alert("you only have".d1.DaysBetween(d2)); 

    return false;   
}   

ただし、これはdatetoフィールドとdatefromフィールドの間の日数を返しません。今では私を夢中にさせています。何か提案をいただければ幸いです。

ありがとう、サイモン

カルビンの提案を参照してください:

if ( jQuery("#book_room_type").val() == "La Maison" ) {
    alert("test");
    var dategap = (jQuery("#dateto").val().getTime() - jQuery("#datefrom").getTime()) / (1000 * 60 * 60 * 24);
    alert(dategap); 
    alert("test2");
    return false;   
}   

これは 2 番目のアラートで失敗し、日付をアラートしませんでした。

4

2 に答える 2

1

+コードは機能しますが、アラートの代わりにドットを使用すると連結エラーが発生します

デモ: http://jsfiddle.net/YgY5c/

于 2012-11-13T12:29:12.003 に答える
1

日付の解析と計算には、datejs - http://www.datejs.com/ - を使用することをお勧めします。

または、プレーンなjsを書きたい場合

function(date1, date2) {
    return (date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24);
}

10 進数で「日」を返します。

結果を配置するか、単に適用するMath.abs()と、正の小数が得られます。

于 2012-11-13T12:23:46.710 に答える