0

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

$(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(甚至不是星期四)。

计算上个星期四的日期时我做错了什么吗?

4

2 回答 2

3

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

使用.setDate()而不是建立一个新的日期:

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

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

于 2012-06-27T13:46:08.480 回答
2

您正在尝试仅根据上周四的月份日期设置日期。尝试这样的事情:

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/

于 2012-06-27T13:45:22.517 回答