Javascript:错误的日期计算

时间:2012-06-27 13:39:46

标签: javascript html

所以我刚发布了一个关于此代码的问题(已经回答):

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

在计算上周四的日期时,我做错了吗?

2 个答案:

答案 0 :(得分:3)

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

使用.setDate()代替建立新日期:

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

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

答案 1 :(得分: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/