2016-11-26 55 views
0

有两个输入如何比较输入中的两个日期?

From: <input id="from" type="date" placeholder="dd/mm/yy"><br> 
To: <input id="to" type="date" placeholder="dd/mm/yy"> 

我想这两个输入比较,以确保离店日期不早于入住日期。但如何比较? THX

+1

html5日期输入应该总是被格式化为'yyyy-MM-dd'如果你试图设置一个输入值格式为“dd/mm/yy”的值,那么你会得到一个无效的值。只是认为你应该改变你的占位符...... – Endless

+0

@无尽 - 并非所有的实现都支持日期输入。 – RobG

回答

0

这是我会怎么做

HTML

<script> 
    function compareDates() { 
     //Get the text in the elements 
     var from = document.getElementById('from').textContent; 
     var to = document.getElementById('to').textContent; 

     //Generate an array where the first element is the year, second is month and third is day 
     var splitFrom = from.split('/'); 
     var splitTo = to.split('/'); 

     //Create a date object from the arrays 
     var fromDate = Date.parse(splitFrom[0], splitFrom[1] - 1, splitFrom[2]); 
     var toDate = Date.parse(splitTo[0], splitTo[1] - 1, splitTo[2]); 

     //Return the result of the comparison 
     return fromDate < toDate; 
    } 
</script> 

<input id="from" type="date" placeholder="dd/mm/yy"><br> 
<input id="to" type="date" placeholder="dd/mm/yy"> 
<button onclick="compareDates()">Compare</button> 

让我知道你是如何得到的。

+0

是的,它的工作原理!非常感谢你的帮助! – tweaktweak

+0

这里有一些错误:* Date.parse *不是构造函数,只需要一个参数,'new Date.parse(...)'应该是'new Date(...)'。此外,月份是零索引,因此'新日期(splitFrom [0],splitFrom [1] - 1,splitFrom [2])'。答案应该解释问题以及如何解决问题,而不仅仅是邮政编码。 – RobG

0

您可以使用valueAsDate然后使用比较:

input1 = document.getElementById('from'); 
input2 = document.getElementById('to'); 

date1 = input1.valueAsDate; 
date2 = input2.valueAsDate; 
console.log(date1 < date2 ? 'valid' : 'invalid'); 
+0

你是对的,我纠正它。 – marcan2020

0

如果你希望你的日期格式进行DD/MM/YY,您可以使用下面的函数将字符串转换为日期:

function compareDate(str){ 
// str format should be dd/mm/yyyy. Separator can be anything e.g./or -. It wont effect 
var dt = parseInt(str.substring(0,2)); 
var mon = parseInt(str.substring(3,5)); 
var yr = parseInt(str.substring(6,10)); 
var date = new Date(yr, mon-1, dt); 
return date; 
} 

然后简单地从输入得到的值,并将其作为比较日期

var input1 = compareDate(document.getElementById('from').value); 
var input2 = compareDate(document.getElementById('to').value); 

日期对象将做你想做的 - 为每个日期构造一个,然后使用>,<,< =或> =来比较它们。

var fromValue = document.getElementById('from').value; 
var toValue = document.getElementById('to').value; 

然后使用JavaScript日期对象,将它们转换为日期:

var fromDate = new Date(fromValue); 
var toDate = new Date(toValue); 

,并删除时间从午夜开始:

+0

也许尝试使用'input.valueAsDate'? – Endless

+0

@ * valueAsDate *的无限浏览器支持是...? – RobG

0

您可以使用JavaScript让您输入的值

fromDate.setHours(0,0,0,0); 
toDate.setHours(0,0,0,0); 

然后比较fromDatetoDate

if (fromDate === toDate) { ... } 
+0

也许尝试使用'input.valueAsDate'? – Endless

+0

It works !!!!!!非常感谢!!!!!!! – tweaktweak

+0

当然,祝你好运。如果您想删除几行代码,请不要忘记包含@Endless建议。 – axlj