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日間のみ予定を修正できます。

このコードを使用していますが、まだ機能していません

    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;
                }
            }       
4

4 に答える 4

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;
}

フィドルの例。少し変更

于 2012-11-23T12:22:21.450 に答える
1
if(serverDateTime.AddDays(7) < txtDate)
{
  //Your Code
}
于 2012-11-23T12:23:26.750 に答える
0

ここでJSFiddleを参照してください

//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");
}
​

これはあなたを導くためだけのものです。あなたはここでもっと読むことができます

于 2012-11-23T12:26:30.493 に答える
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.valueの値を変更してください。また、日付を正しく理解するために、フォーマットについて追加の検証を行うことをお勧めします。javascriptの日付/時刻のすべての詳細については、MDN日付を参照してください

編集

私はこれを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")

これは「true」を返し、これを試しました:

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

「false」を返します

これはあなたの質問に答えているようで、さらなる問題はアルゴとは関係ありませんが、ブラウザがそれをどのように解釈し、どのように管理するかに似ています。

于 2012-11-23T12:54:06.280 に答える