如何检查是否日期落入内未来7天

问题描述:

function validateDate() {    
    serverDateTime="2012-11-23 17:06:46"; 
    txtDate.value="30-Nov-2012" 

    if (how i check here){ 
     alert("Appointment can be fixed for next seven days only from current day.");      
     return false; 
    }else{ 
     return true; 
    } 
} 

我得到上主的页面加载和访问serverDateTime,在所有页面变量,比较serverDateTime与txtDate.value我怎么确认预约可固定仅从今天开始的七天。如何检查是否日期落入内未来7天

I M使用此代码但仍然没有工作

function validateDate() 
      {   
       var dateDifference; 
       pickedDate = Date.parse(txtDate.value.replace(/-/g, " ")); 
       todaysDate = new Date(serverDateTime); 
       todaysDate.setHours(0, 0, 0, 0); 
       dateDifference = Math.abs(Number(todaysDate) - pickedDate); 
       //7 Days=604800000ms 
       if (dateDifference > 604800000) 
       { 
        return false; 
       } 
       else 
       { 
        return true; 
       } 
      }  

这应该工作:

//Get the date value of next week. 
var today = new Date(serverDateTime); 
var nextWeek = Date.parse(new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7)); 

//If nextWeek is smaller (earlier) than the value of the input date, alert... 
if (nextWeek < Date.parse(txtDate.value)){ 
    alert("Appointment can be fixed for next seven days only from current day.");      
    return false; 
}else{ 
    return true; 
} 

Fiddle example. Slightly modified

+0

cerebrus我必须比较txtDate.value与serverDateTime不要与客户日期比较 – lax

+1

哎呀,忘了那个变量。 这应该这样做。它会在'serverDateTime'字符串中创建一个Date对象,并添加一个星期,然后将其与输入进行比较。 这些帽子是完全没有必要的。 – Cerbrus

+0

这是因为'txtDate.value =“2012年11月30日”'是在7天内。代码起作用。 尝试'txtDate.value =“2012年12月5日”' 我假设'txtDate'确实是一个对象? – Cerbrus

if(serverDateTime.AddDays(7) < txtDate) 
{ 
    //Your Code 
} 
+0

我必须比较txtDate.value与serverDateTime不要与客户日期比较 – lax

See JSFiddle here

//Set 1 day in milliseconds 
var one_day=1000*60*60*24; 
var serverDateTime= new Date("2012-11-23 17:06:46"); 
var newDate = new Date("30-Nov-2012"); //replace with txtDate.value 

//Calculate difference btw the two dates, and convert to days 
var diff = Math.ceil((newDate.getTime() - serverDateTime.getTime())/one_day); 
if(diff >= 7) 
{ 
    alert("7 days"); 
} 
else 
{ 
    alert("Not up to 7 days"); 
} 
​ 

这仅仅是来指导你。您可以read more here

+0

不给我警告使用上面的代码 – lax

+0

var serverDateTime = new Date(“2012-11-23 17时06" 分46秒);进入NAN – lax

+0

它没有使用警报。我会更新。你仍然需要适应你的情况。我只向你展示了如何获得差异 – codingbiz

之前,你可以比较日期,他们必须日期... 在你的榜样,他们都是字符串所以尝试这样的事:

function validateDate() { 
    var one_day=1000*60*60*24; 
    serverDateTime="2012-11-23 17:06:46"; 
    txtDate.value="30-Nov-2012" 

    var _dtSvr = Date.parse(serverDateTime); 
    var _dtTxt = Date.parse(txtDate.value); 

    if (((_dtTxt - _dtSvr)/one_day) > 7){ 
    alert("Appointment can be fixed for next seven days only from current day.");      
    return false; 
    }else{ 
    return true; 
    } 
} 

试试这个,改变txtDate的值。值。 我还建议您对格式进行额外验证,以便正确理解日期。 在JavaScript中的MDN Date一脸的日期/时间的所有细节

编辑

我想这正是在Chrome(v23.xxx)控制台:

function validateDate(serverDateTime, txtDate) 
     {   
      var dateDifference; 
      pickedDate = Date.parse(txtDate.replace(/-/g, " ")); 
      todaysDate = new Date(serverDateTime); 
      todaysDate.setHours(0, 0, 0, 0); 
      dateDifference = Math.abs(Number(todaysDate) - pickedDate); 
      //7 Days=604800000ms 
      if (dateDifference > 604800000) 
      { 
       return false; 
      } 
      else 
      { 
       return true; 
      } 
     } 

然后我尝试这样做:

validateDate("2012-11-23 17:06:46", "30-Nov-2012") 

返回 “真” 并试用了此:

validateDate("2012-11-23 17:06:46", "30-Dec-2012") 

返回“假”

它看起来像这样回答你的问题,进一步的问题是什么做的算法中,但更喜欢你的浏览器如何解释它,以及如何对其进行管理。

+0

_dtSvr NAN ........_ dtTxt NAN – lax

+0

您是否阅读过我提供的链接以查看Javascript接受的日期/时间格式,并查看是否没有文化特定问题?大多数例子在这里给几个人和浏览器工作,为什么不是你的? –

+0

更确切地说:你使用什么浏览器(名称和版本)?我注意到Firefox和Chrome之间的区别......不知何故,我总是忘记Internet Explorer;) –