2012-11-23 87 views
3
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; 
       } 
      }  

回答

2

這應該工作:

//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

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

我必須比較txtDate.value與serverDateTime不要與客戶日期比較 – lax

0

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

0

之前,你可以比較日期,他們必須日期... 在你的榜樣,他們都是字符串所以嘗試這樣的事:

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;) –

相關問題