簡體   English   中英

如何檢查日期是否過去?如何獲取兩個日期之間的差異? 通過輸入標簽類型日期和時間類型

[英]How to check whether the date is in past or not?and How to get difference between two dates? by input tag type date and type time

餐廳應用預訂表功能。

通過<input type="date"> and <input type="time">

我需要的。

1.如何檢查給定/輸入的日期和時間是否過時。如果過時無效,則將來有效。

2.如何獲取兩個日期和時間之間的時差。這樣我就可以顯示預訂表剩余的時間,並且允許用戶在提到的預訂日期和時間之內獲取一個表。(可以通過setInterval()

HTML

    <html>
    <head>
    </head>
    <body>
    <table id="tdatetime">
      <tr><td>Select Date</td><td>Select Time</td></tr>
       <tr><td><input type="date" id="bdate"></td><td><input type="time" id="btime"></td></tr>
    </table>

<input type="button" id="bdtbtn" onclick="getbdtRL(this)" value="Book Now"></input>
    </body>
    </html>

JS

function getbdtRL(bookbtn)
        {
        var bdate=$("#bdate").val();
            var btime=$("#btime").val();

            var now = new Date();
                    var selectedDate=new Date(bdate);
                    var selectedTime=new Date(btime);
                    alert(btime);//returns for example- 2:00
                    alert(selectedTime);//returns Invalid Date
                    alert(selectedTime.toString());//returns Invalid Date
                    alert(selectedTime.toTimeString());//returns Invalid Date
                    alert(selectedTime.toDateString());//returns Invalid Date

            //Date check is working
            if(selectedDate<now)
                    {
                    alert("Selected Date is in Past");
                    }
                    else if(selectedDate>now)
                    {
                        alert("Selected Date is in Future");    
                    }
                    else if(selectedDate==now)
                    {
                        alert("Selected Date is in Present");   
                    }

            //Time Check is not working by selectedTime
                    if(selectedTime<now)
                    {
                    alert("Selected Time is in Past");
                    }
                    else if(selectedTime>now)
                    {
                        alert("Selected Time is in Future");    
                    }
                    else if(selectedTime==now)
                    {
                        alert("Selected Time is in Present");   
                    }

        //Time Check is not working by btime
                    if(btime<now)
                    {
                    alert("Selected Time is in Past");
                    }
                    else if(btime>now)
                    {
                        alert("Selected Time is in Future");    
                    }
                    else if(btime==now)
                    {
                        alert("Selected Time is in Present");   
                    }
    }


    //Date and Time Difference not working
    var date=new Date();
                var tempdate="2015-05-01";
                var d1 = date;//tempdate;//
                //alert("current date d1="+d1);
                var d2 = RLArrBookDateSender;//receiving from db2 database data type is time which is already booked
                //alert("booked date d2="+d2);
                var DateDiff = {

                        inDays: function(d1,d2) {
                            var t2 = d2.getTime();
                            var t1 = d1.getTime();

                            return parseInt((t2-t1)/(24*3600*1000));
                        }
                };
                alert("diff="+DateDiff.inDays(d1,d2));//no alert executes

您需要從DOM元素獲取值,新的Date僅接受String或Number或一系列Numbers,而不接受DOM元素。 嘗試在“日期和時間”字段中輸入一個值,然后在控制台中輸入以下代碼。

alert( new Date( bdate.value + ' ' + btime.value ) - new Date > 0? 'future' : 'past');

您可以通過以下方式進行檢查: http : //jsfiddle.net/IonDen/gt4tqca9/

var date_in_future = new Date("2015-10-20"),
    date_in_past = new Date("2014-05-15");

function check (date) {
    var now = new Date().getTime(),
        target = date.getTime();

    if (target <= now) {
        return false;
    } else {
        return true;
    }
}

function diff (date) {
    var now = new Date().getTime(),
        target = date.getTime();

    return now - target;
}

console.log(date_in_future);
console.log(date_in_past);

console.log("future date? " + check(date_in_future));
console.log("future date? " + check(date_in_past));

console.log("diff: " + diff(date_in_future));
console.log("diff: " + diff(date_in_past));

如果您正在尋找更多答案,我深表歉意。但是,如果以下內容正確無誤,那么這應該是有道理的...

(已經晚了,但我相信邏輯是對的...)

比較日期:

var now = new Date();
var selectDate = new Date(bdate);
var diff = now.getTime() - selectDate.getTime();
if(diff > 0 || diff == 0) {
  // selected date is in the past or is our current time 
  // (which should be tough to match down to milliseconds)
}
else if (diff < 0) {
  // selected date has not past
}

要剩余時間直到將來的日期:

var now = new Date();
var validFutureDate = new Date(bdate);
var diff = validFutureDate.getTime() - now.getTime(); // in milliseconds
var dayDiff = parseInt(diff/(1000*60*60*24));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM