0

私はこの形式の日付文字列を持っています-「DD-MM-YYYY」これはそれを正常に検証します:

var dateFormat = /(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-\d{4}/ ;
if(!startDate.match(dateFormat)){
    alert("'Start Date' must be in format: DD-MM-YYYY");
    return false;

挿入された日付が今日の日付(または今日の日付)より後であることを確認する必要があります。JavaScriptでそれを行うにはどうすればよいですか?

私はこれを試しました: セパレータを使用したhttp://www.redips.net/javascript/date-validation/ は機能しませんでした。提案?

4

6 に答える 6

5

まず、これは現在の日付を JavaScript で表したものです。

var today = new Date();
var day = today.getDate();
var month = today.getMonth()+1; // Zero indexed

ここからは、これを開始日と比較するだけです。

よろしくお願いします!

日付オブジェクトを理解するのに役立つかもしれません

于 2012-05-09T21:10:47.977 に答える
2

これはmoment.jsで非常に簡単に行うことができます。

var input = moment(startDate, "DD-MM-YYYY");
if (input < moment()) {
    // before today
} else {
    // after today
}

日付の検証も間もなく追加されます。検証の詳細については、https ://github.com/timrwood/moment/pull/306をご覧ください。

于 2012-05-11T22:46:20.147 に答える
2

特にdate.jsをチェックしてください...

http://code.google.com/p/datejs/wiki/APIDocumentation#compare

最初の日付と 2 番目の日付を比較し、それらの相対値を表す数値を返します。-1 = これは < 日付です。0 = 値は等しい。1 = これは > 日付です。

isAfter()とメソッドはisBefore()あなたの問題に役立つかもしれません:)

ここからライブラリをダウンロードしてください:

http://code.google.com/p/datejs/downloads/detail?name=date.js&can=2&q=


また、 checkout moment.jsに言及する価値があります。2 つのライブラリは相互に補完し合っていると思います。

于 2012-05-09T21:09:11.917 に答える
1

このようなものがうまくいくはずです。いくつかのクリーンアップを使用できますが、うまくいけば要点を理解できます。

var dateFormat = /(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(\d{4})/;
var dateMatch = startDate.exec(dateFormat);
var today = new Date();
today.setHours(0); today.setMinutes(0); today.setSeconds(0); today.setMilliseconds(0);

if ((new Date(dateMatch[3], dateMatch[2] - 1, dateMatch[1])).getTime() >= today.getTime()) {
    // Date is after or on today
}
于 2012-05-09T21:06:26.700 に答える
1

各日付getTime()メソッドを確認して比較する必要があります。単純明快で、追加のフレームワークは必要ありません。

文字列から日付を解析して比較する例を次に示します。

var todayDate = "10-05-2012";​ // A sample date
var compareDate1 = "10-05-2012";
var compareDate2 = "03-05-2012";
var compareDate3 = "10-07-2012";

compareDates(todayDate, compareDate1);
compareDates(todayDate, compareDate2);
compareDates(todayDate, compareDate3);

function compareDates(date1String, date2String) {
    var date1 = parseDate(date1String);
    var date2 = parseDate(date2String);
    if(date1.getTime() > date2.getTime()) {
      alert("First date(" + date1String + ") is older than second date(" + date2String + ").");                
    } else if(date1.getTime() < date2.getTime()) {
      alert("First date(" + date1String + ") is younger than second date(" + date2String + ").");                
    } else {
      alert("The dates are the same day");   
    }
}

function parseDate(stringDateParam) {
    var parsedDay = parseInt(stringDateParam.substring(0,2));
    var parsedMonth = parseInt(stringDateParam.substring(3,5))-1;
    var parsedYear = parseInt(stringDateParam.substring(6,10));
    var parsedDate = new Date(parsedYear, parsedMonth, parsedDay, 0 , 0, 0, 0);
    return parsedDate;
}
​

// Output:
//
// First check: The dates are the same day
// Second check: First date(10-05-2012) is older than second date(03-05-2012).
// Third check: First date(10-05-2012) is younger than second date(10-07-2012).

compareDatesおそらく、文字列を日付オブジェクトに解析する関数が既にあるので、関数ベースの関数と同様のチェックを実装する必要がありますgetTime()

さらに質問がある場合は、コメントを残してください。幸運を!

JSFiddle の動作例:ここをクリック

于 2012-05-09T21:40:02.387 に答える
0

皆さん、ありがとうございました!これはトリックをしました:

var today = new Date();
var Tday = today.getDate();
var Tmonth = today.getMonth()+1; // Zero indexed
var Tyear = today.getFullYear();

var aoDate;
var separator= '-';
aoDate = startDate.split(separator);

var month = aoDate[1] - 0;
    var day = aoDate[0] - 0;
    var year = aoDate[2] - 0;

    if(year < Tyear){
        alert("'Start Date' must be today or after today!");
    return false;
    }
    if((year == Tyear) && (month < Tmonth)){
        alert("'Start Date' must be today or after today!");
    return false;
    }
    if((year == Tyear) && (month == Tmonth) && (day < Tday)){
        alert("'Start Date' must be today or after today!");
    return false;
    }
于 2012-05-10T07:19:35.487 に答える