Javascript:错误的日期计算

Javascript: wrong date calculation

本文关键字:日期 计算 错误 Javascript      更新时间:2023-09-26

所以我刚刚发布了一个关于这段代码的问题(得到了回答):

$(document).ready(Main); 
function Main() { 
    ConfigDate();         
} 

function ConfigDate() { 
    var currentTime = new Date(); 
    var dayofWeek = currentTime.getDay(); 
    var daysSinceThursday = (dayofWeek + 3) % 7 
    var lastThursday = new Date(currentTime.getDate() - daysSinceThursday); 
    var dd = lastThursday.getDate(); 
    var mm = lastThursday.getMonth() + 1; 
    var yyyy = lastThursday.getFullYear(); 
    $("#last_thursday").text(yyyy + " / " + mm + " / " + dd); 
} 

现在的问题是出现在我的单元格中的日期是 1969/12/31(甚至不是星期四)。

我在计算上周四日期时做错了什么吗?

这是因为.getDate()返回月份中的某天。 因此,您正在根据小于 30 的序列号构建日期,这甚至不会将您的秒数设置为 1 以上。

使用.setDate()而不是构建新日期:

date.setDate(date.getDate() - daysSinceThursday);

.setDate()将修改现有日期对象,但它不会返回新日期。

您正在尝试仅基于最后一个星期四的月份中的日期设置日期。尝试这样的事情:

var daysSinceThursday = (dayofWeek + 3) % 7;
var lastThursday = new Date(currentTime.getTime());
lastThursday.setDate(currentTime.getDate() - daysSinceThursday);
var dd = lastThursday.getDate();
var mm = lastThursday.getMonth() + 1; 
var yyyy = lastThursday.getFullYear();

http://jsfiddle.net/rAuRF/3/