質問
週末の場合に日付を変更する関数を実行しましたが、翌日を与える代わりに、day+1を実行します。たとえば、最後の日曜日である2012年9月31日を入力しました。
私には私の役割がある
<script type="text/javascript">
function getdate2() {
var items = new Array();
var itemCount = document.getElementsByClassName("datepicker hasDatepicker");
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
}
for (var i = 0; i < itemCount.length; i++) {
items[i] = document.getElementById("date" + (i + 1)).value;
var itemDtParts = items[i].split("-");
var itemDt = new Date(itemDtParts[2], itemDtParts[1] - 1, itemDtParts[0]);
if (itemDt.getDay() == 6) {
itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ (itemDt.getDate()+2)+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();
}
if (itemDt.getDay() == 0) {
itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ (itemDt.getDate()+1)+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();
}
}
return items;
}
</script>
しかし、10 月 1 日を与える代わりに、存在しない 2012 年 9 月 31 日を与えてきました。
本当にどうやって処理すればいいのか分かりません。
解決
毎月の月数を配列に保存する必要があります。
var dayspermonth = new array(31,28,31,30,31,30,31,31,30,31,30,31);
.
別々の関数でそれをするのが最善:
function int lastDay(d, m){
var result = d
var dayspermonth = new array(31,28,31,30,31,30,31,31,30,31,30,31);
if(d > dayspermonth[m]){
d=1;
}
return d;
}
.
その後、(例えば)行う必要があります。
itemCount[i].value = (itemDt.getDate() < 9 ? "0" : "")+ lastDay((itemDt.getDate()+1), itemDt.getMonth())+ "-" + (itemDt.getMonth() < 9 ? "0" : "") + (itemDt.getMonth() + 1) + "-" + itemDt.getFullYear();
.
編集: それが起こるならば、あなたは月を1で増やす必要があります。そして、年を1年に追加し、月が1に月を設定する必要があります。
他のヒント
2012/07/25 - 土曜日。コードチェック(土曜日)の場合は、日曜日に1日を追加する http://jsfiddle.net/s3q4p/
var mydate=new Date(2012,07,25)
if(mydate.getDay() == 6) //Saturday
mydate =new Date(mydate.getFullYear(),mydate.getMonth(),mydate.getDate()+2)
else if (mydate.getDay() == 0) //Sunday
mydate =new Date(mydate.getFullYear(),mydate.getMonth(),mydate.getDate()+1)
. 所属していません StackOverflow