用Javascript检查2个日期
Checking 2 dates with Javascript
我正在尝试检查到达日期是否与离开日期相同,然后它应该显示一个警告框,上面写着"请更改到达日期"。
为什么它不能在JavaScript中工作。
Leaving: <input type='date' id='mydateL' class="icon"></input>
Returning: <input type='date' id='mydateR' class="icon"></input>
<input type="button" value="test" onclick="datetimevalidation()"
<script>
function datetimevalidation() {
var leavedate = new Date(document.getElementById("mydateL").value);
var arrivedate = new Date(document.getElementById("mydateR").value);
if(leavedate == arrivedate) {
alert('Please change arrivedate.');
}
}
</script>
只需将日期转换为long即可进行比较。
var leavedate = +new Date(document.getElementById("mydateL").value);
var arrivedate = +new Date(document.getElementById("mydateR").value);
if(leavedate == arrivedate) {
alert('Please change arrivedate.');
}
您需要在if
条件中使用getFullYear()
、getMonth()
和getDate()
。
Leaving:
<input type='date' id='mydateL' class="icon"></input>Returning:
<input type='date' id='mydateR' class="icon"></input>
<div onclick="datetimevalidation()">Click Me</div>
<script>
function datetimevalidation() {
var leavedate = new Date(document.getElementById("mydateL").value);
var arrivedate = new Date(document.getElementById("mydateR").value);
if (leavedate.getFullYear() == arrivedate.getFullYear() && leavedate.getMonth() == arrivedate.getMonth() && leavedate.getDate() == arrivedate.getDate()) {
document.write('Please change arrivedate.');
}
}
</script>
Leaving: <input type='date' id='mydateL' class="icon"></input>
Returning: <input type='date' id='mydateR' class="icon"></input>
<button onclick="myFunction()">Click me</button>
尝试转换日期对象,比较将起作用:
function myFunction()
{
var leavedate = new Date(document.getElementById("mydateL").value);
leavedate = leavedate+ "";
var arrivedate = new Date(document.getElementById("mydateR").value);
arrivedate = arrivedate+ "";
if(leavedate == arrivedate)
{
alert('Please change arrivedate.');
}
}
您没有提供足够的信息来准确回答问题,因此只能给出一般建议。
并非所有使用中的浏览器都支持输入类型日期,因此简单地将用户输入的内容转换为日期对象而不首先验证输入将不是一个可靠的解决方案。
考虑一位英国用户,其日期设置格式为dd/mm/yyyy,输入日期为2015年11月23日。然后使用Date构造函数解析该值。
在Chrome(支持日期输入)中,输入将根据系统设置提供dd/mm/yyyy的提示。输入的值属性返回的值将是2015-11-23的字符串,Chrome中的Date构造函数将其解析为本地日期。
在不支持Date输入的Firefox v42中,字符串将完全按照用户输入的方式返回。Firefox将解析2015年11月23日,就像它是mm/dd/yyyy一样,并返回2016年11月11日的日期。
Safari 9也不支持日期输入,并将尝试像Firefox一样将其解析为mm/dd/yyyy,但会返回一个无效的日期(因为没有月23)。
Omniweb 6的功能类似Safari。
因此,"它不起作用"的说法并不奇怪。对于稳健的日期输入,您必须:
- 指定用户应输入的格式
- 验证输入的值是否为有效日期
- 比较这些值
如果输入了有效字符串,则可以直接比较它们是否相等,无需将它们转换为Date对象。然而,如果稍后需要日期对象,如果将日期转换为数字(例如),则比较日期也没有害处
if (+date0 == + date1) {
// Dates are equal
}
日期必须首先转换为数字,否则==
会将它们作为对象进行比较,并且没有两个对象是相等的,因此结果总是错误的,除非d0和d1引用了相同的日期对象(如果在OP上有注释,这似乎是问题所在,至少在Chrome中是这样)。
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何在多个jQueryUI日期选择器中屏蔽特定日期
- 如何用moment.js列出两个日期之间的所有月份
- 两个日期时间选择器
- 如何在JavaScript中比较两个日期
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- moment.js在两个时区格式的日期之间存在差异
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 通过将6个月添加到今天来获得最后一个月的日期's日期
- Javascript两个日期选择器冲突
- 如何从日期范围选择器中获取两个日期
- 用时间戳获取两个不同日期之间的时间差
- 从第一个日期选择器定义第二个日期选择器的开始日期
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 使用javascript将两个输入的日期添加在一起
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 使用JavaScript显示日期+3个月
- 如何将相同的日期第一个文本框设置为第二个文本框,当计数器字段
- 当前日期两个时间之间的时间