javascriptの日付演算
月と日にちのプルダウン指定日より
2日以内及び45日以上の予約は受け付けないというプログラムを作りました。
忘れるのでメモ
仕様としては、項目をループして取得してるので、
月はmm1で取得しておく...
ひっかかったのは
・getYear();が108で返ってくる場合がある。
・getMonth();は0始まりだからプラス1する必要がある。
・日付演算は'yyyy/mm/dd'でできる。
new Dateの取得は、もっと少なくて済みそうだけど、今日は力つきた...
しかし、納品まで頑張りきれるようになってきた自分をほめてあげたいw
ソース
if(text == "予約第一希望月"){
mm1="";
if(obj.elements[i].value != ""){
mm1=obj.elements[i].value;
}
}
else if(text == "予約第一希望日"){
if(obj.elements[i].value != ""){
//日が記入ありで月が記入なし
if(mm1==""){
error_element_number.push(i);
caution = caution + "予約第一希望月が設定されてません。\n";
errorflag = 1;
}else{
dd = new Date();
yy1=dd.getYear();
//指定月が本日月より小さければ年を1足す 年またぎ対策
if(dd.getMonth() > mm1){yy1=yy1+1;}
dd1=obj.elements[i].value;
yymmdd1= new Date(yy1+'/'+mm1+'/'+dd1);
//2日後
myD = new Date();
myD = new Date(myD.getYear(), myD.getMonth(), myD.getDate() +2);
myYear = myD.getYear();
//108対策
if (myYear < 2000) { myYear += 1900; }
myMonth = myD.getMonth() + 1;
myDate = myD.getDate();
myMess1 = new Date(myYear+'/'+myMonth+'/'+myDate);
//45日後
myD2 = new Date();
myD2 = new Date(myD2.getYear(), myD2.getMonth(), myD2.getDate() +45);
myYear2 = myD2.getYear();
if (myYear2 < 2000) { myYear2 += 1900; }
myMonth2 = myD2.getMonth() + 1;
myDate2 = myD2.getDate();
myMess2 = new Date(myYear2+'/'+myMonth2+'/'+myDate2);/*確認用
error_element_number.push(i);
caution = caution + "指定日="+yymmdd1+"\n";
caution = caution + "2日後="+myMess1 +"\n";
caution = caution + "45日後="+myMess2 +"\n";
*/
//2日以内
if(yymmdd1 < myMess1){
error_element_number.push(i);
caution = caution + "予約第一希望年日が予約設定対象外です。\n";
errorflag = 1;
}
//45日以上
else if(myMess2 < yymmdd1){
error_element_number.push(i);
caution = caution + "予約第一希望日が予約設定対象を過ぎています。\n";
errorflag = 1;
}
}
//日が記入なしで月が記入あり
}else{
if(mm1 != ""){
error_element_number.push(i);
caution = caution + "予約第一希望日が設定されてません。\n";
errorflag = 1;
}
}
}
}
}