繁体   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