如何在javascript中找到去年日期的确切工作日

How to find the exact weekday of last year for a date in javascript?

本文关键字:日期 工作日 javascript      更新时间:2023-09-26

我想在javascript中找到去年的星期日期?

今天是星期一,2015年5月18日去年是星期日,2015年5月18日

所以我想要得到去年最近的星期一,例如在本例中是星期一,18.05.2014。

如何计算?

jsFiddle

JS

// this will get the number of days required to go forward to reach the same day
function forwardDay(begin, end) {
    var result = 0;
    for (var i = 0; i < 6; i++) {
        if (begin == end) return result;
        result++;
        if (begin == 6) {
            begin = 0;
        } else {
            begin++;
        }
    }
}
// this will get the number of days required to go forward to reach the same day
function backwardDay(begin, end) {
    var result = 0;
    for (var i = 0; i < 6; i++) {
        if (begin == end) return result;
        result++;
        if (end == 0) {
            end = 6;
        } else {
            end--;
        }
    }
}
// gets today 
var today = new Date();
// gets the day number of today 0-6
var thisYearDay = today.getDay();
// sets to last year
today.setYear(today.getFullYear() - 1);
// gets last years day 0-6
var lastYearDay = today.getDay()
// calculates the number of days it would be going backwards
var backward = backwardDay(lastYearDay, thisYearDay);
// gets the number of days it would be going forwards
var forward = forwardDay(lastYearDay, thisYearDay);
console.log(backward);
console.log(forward);
// figuring out which was was shorter
if (forward < backward) {
    today.setDate(today.getDate() + forward);
} else {
    today.setDate(today.getDate() - backward);
}
// DONE!
console.log(today);

直接使用Date

下面是一个例子:

var a = new Date();
var day = a.getDay();
a.setYear(1900+a.getYear()-1);
a.setDate(a.getDay()- day -1 );
alert(a);

d.setMonth(date.getMonth() -- 12);得到去年的日期,用var n = d.getDay();得到星期几。

0为星期日,1为星期一

下次先用google;-)

如果您想使用JavaScript的内置函数之一,可以使用Date对象。或者,如果您想自己计算星期几,请使用泽勒规则。