![](/img/trans.png)
[英]On a javascript calendar, the month starts on Sunday, but weeks start on monday
[英]JavaScript calendar dont show the first of month if is sunday
我正在使用以下 Javascript 日歷。 問題是如果一個月的第一天是星期日,它就不會出現。 見八月。
該腳本已由一位朋友改編,以允許每周從星期一開始。 我感謝任何幫助,非常感謝!
function getDays(passedInDate, date, i, local) {
var month = {
name: date.toLocaleString(local, { month: 'long'}),
year: date.getFullYear(),
weeks: []
};
var newDate = new Date(passedInDate.getFullYear(), passedInDate.getMonth() + i, 1).getMonth();
var counter = 0;
while (date.getMonth() === newDate) {
var week = getNumberOfWeeks(newDateInstance(date));
//if(week == 5)
// break;
if (typeof month.weeks[week] === 'undefined') {
month.weeks[week] = {};
}
var day = newDateInstance(date);
day.setTime(day.getTime() + (24 * 3600 * 1000));
//console.log(day);
if(week == 0 && counter == 0 && day.getDay() >= 2){
var tempDay = new Date(day.getTime() - (24 * 3600 * 1000));
month.weeks[week][tempDay.getDay()-1] = {
date: tempDay
};
}
else if(week == 0 && counter == 0 && day.getDay() == 0){
console.log(day.getDay());
var tempDay = new Date(day.getTime() - (24 * 3600 * 1000));
month.weeks[week][5] = {
date: tempDay
};
}
if(week == 4 && day.getDate() == 1 || week == 5 && day.getDate() == 1){
break;
}
if(day.getDay() == 0){
month.weeks[week][6] = {
date: day
};
}else{
month.weeks[week][day.getDay()-1] = {
date: day
};
}
date.setDate(date.getDate() +1);
counter++;
}
return month;
}
該函數比需要的過於復雜:
function getNumberOfWeeks(date) {
let w = date.getDay() - 1;
if (w < 0)
w = 6;
return Math.ceil((date.getDate() - 1 - w) / 7);
}
function getDays(passedInDate, date, i, local) {
const newDate = new Date(passedInDate.getFullYear(), passedInDate.getMonth() + i, 1).getMonth(),
month = {
name: date.toLocaleString(local, { month: 'long'}),
year: date.getFullYear(),
weeks: []
};
while (date.getMonth() === newDate) {
const _date = newDateInstance(date),
week = getNumberOfWeeks(_date),
day = _date.getDay();
if (month.weeks[week] === undefined) {
month.weeks[week] = {};
}
month.weeks[week][day ? day - 1 : 6] = {
date: _date
};
date.setDate(date.getDate() +1);
}
return month;
}
此外, month.weeks[week][day]
包含不必要的{date: Date}
對象,它可以簡單地包含Date
本身(有 2 個放置需要通過刪除.date
)
旁注:請避免對相同函數的不必要調用,調用它們一次並將結果存儲在變量中,而不是使用變量。 只需計算day.getDay()
執行了多少次...哎喲!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.