如何使用jQuery检查日期与当前日期
我想检查一下我的日期是否大于当前日期
$("#EndDate").val() ="5/13/2014" ->M/d/y
请在下面找到代码
if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { //condition satisfied for today date too. }
所以我的结束日期是今天的日期。但是当前日期仍然大于结束日期。 为什么? 我该如何检查和validation这一点。 我知道某些时间值大于结束日期。 但我想只检查日期/月/年而不是时间。
如果:
$("#EndDate").val();
以m / d / y格式返回一个字符串,您可以使用以下命令将其转换为日期对象:
function parseDate(s) { var b = s.split(/\D/); return new Date(b[2], --b[0], b[1]); }
要创建可比较的日期,请执行您正在执行的操作:
var today = new Date(); today.setHours(0,0,0,0);
所以现在你可以这样做:
if (parseDate($("#EndDate").val()) > today) { // date is greater than today }
或者如果你真的必须:
if (+parseDate($("#EndDate").val()) > new Date().setHours(0,0,0,0)) ...
请注意,当你这样做时:
Date.parse(new Date().setHours(0, 0, 0, 0))
首先, new Date()
创建一个新的日期。 调用setHours()
设置时间值,但调用的返回值是Date对象的UTC时间值。
Date.parse需要一个看起来像日期和时间的字符串,所以如果你传递一个像1399903200000这样的数字时间值,实现将回退到一些实现启发式,将其转换为Date或NaN 。
所以请不要这样做。 使用Date.parse解析任何字符串都取决于实现(即使是ECMA5中指定的字符串),并且将在不同的浏览器中返回不同的结果。 所以请不要这样做。
请尝试以下方法:
var end_date = "05/12/2014" if(new Date() > new Date(end_date)) { alert('End date should be greater than Start date'); }
小提琴
我通过修改这样的代码找到了解决方案
if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) { // }
避免时间比较。 有没有其他更好的方法来有效地比较日期没有任何插件。
var startDate = moment.parse("18/02/2013", "DD/MM/YYYY"); var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); if(dd<10) { dd='0'+dd } if(mm<10) { mm='0'+mm } today = dd+'/'+mm+'/'+yyyy; if (today.isAfter(startDate)) { ... }
你的要求
检查我的日期是否大于当前日期
你给我们这个..
if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { //condition satisfied for today date too. }
只需改变你的状况:
if (Date.parse(new Date()) < Date.parse($("#EndDate").val())) { //condition satisfied for today date too. }
但是,我迟到了回答这个问题,但这是我解决这个问题的方法:
var TodayDate = new Date(); var endDate= new Date(Date.parse($("#EndDate").val())); if (endDate> TodayDate) { // throw error here.. }