我想验证当日期和时间选择是过去的当前日期和时间

I want to validate when date and time selected is past current date and time

本文关键字:时间 过去 当前日期 选择 日期 验证      更新时间:2023-09-26

我有两个只读文本框,一个文本框与jquery日期选择器链接,另一个文本框与时间选择器jquery链接。现在,jquery datepicker的优点在于我可以对日期进行范围设置,这样用户就不能选择当前日期之前的任何日期。但是Jquery的时间选择器不能设置范围,所以时间在当前时间之前。

因此,有可能用户可以选择当前日期,但在当前时间之前的时间。显然,这意味着所选择的时间已经过了我不希望发生的当前时间。因此,如果日期文本框和时间文本框超过当前日期和时间,则显示一条消息,说明"您选择的日期和时间在当前日期和时间之前",否则,如果时间和日期一起超过当前日期和时间,则显示"。

我该怎么做呢?下面是我最好的尝试,但我不能让它工作。

<head>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
            <title>Create a Session</title>
                    <script type="text/javascript">
     function validation() {
                    var dateTextO = document.getElementById("datepicker");
                    var timeTextO = document.getElementById("timepicker");
                    var errDateTimeMsgO = document.getElementById("dateTimeAlert")
    var currentDate = new Date()
        var day = currentDate.getDate()
        var month = currentDate.getMonth() + 1
        var year = currentDate.getFullYear()
        var currentTime = new Date()
        var hours = currentTime.getHours()
        var minutes = currentTime.getMinutes()
        if (minutes < 10){
        minutes = "0" + minutes
        }
        if (hours < 10){
        hours = "0" + hours
        }
        if((dateTextO < currentDate) && (timeTextO < currentTime)){
            errDateTimeMsgO.innerHTML = "The Date and Time you have selected is before the Current Date and Time";
        } else {
            errDateTimeMsgO.innerHTML = "";
        }
            }
    </script>
    </head>
    <body>
    <form action="create_session.php" method="post" name="sessionform">
    <p><strong>4: Date:</strong> <input type="text" id="datepicker" readonly="readonly"></p>
                <p><strong>5: Time:</strong> <input type="text" id="timepicker" readonly="readonly"><span class="timepicker_button_trigger"><img src="Images/clock.gif" alt="Decrease" /></span></p>
                <div id="dateTimeAlert"></div>
    </form>
    </body>

实际上new Date()生成的日期是这样的

Wed Jul 20 2011 19:09:46 GMT+0530 (IST)

但是你的日期选择器时间可能是这样的

28-07-2011

是两种不同的格式。所以你不能比较,所以你必须把它们放到一个格式

var checkindatestr = document.getElementById("datepicker");
var dateParts = checkindatestr.split("-");
var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var now = new Date();
var difference = now - checkindate;

你可以用这种方法找出这两天的时差。

我会找到一种方法,告诉你如何比较2次.........: D

    var checkindatestr = document.getElementById("datepicker"); 
    var dateParts = checkindatestr.split("-");  
    var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); 
    var nowdate = new Date(); 
    var differenceDate = parseInt(nowdate) - parseInt(checkindate); 
    var checkintimestr = document.getElementById("timepicker"); 
    var timeParts = checkindatestr.split(":"); 
    var currentTime = new Date(); 
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();
    if(( differenceDate >= 0) && (parseInt(hours) >= parseInt(timeParts[0]))  && (parseInt(minutes) > parseInt(timeParts[1]) )){
        errDateTimeMsgO.innerHTML = "The Date and Time you have selected is before the Current Date and Time";
    } else {
        errDateTimeMsgO.innerHTML = "";
    }
        }