Javascript日期在该月的第一天停止工作。

时间:2014-05-01 12:38:15

标签: javascript

我有一个date selector自动填写昨天我的表单上的日期输入,但是在该月的第一天它只是空白并且无法填充日期。我想我的代码缺少告诉它去上个月的位,如果它是第一个。我无法解决这个问题。所有帮助表示赞赏。

var today = new Date();
$(document).ready( function() {
    var now = new Date();
    var month = (now.getMonth() + 1);               
    var day = (now.getDate() - 1);
    if(month < 10) 
        month = "0" + month;
    if(day < 10) 
        day = "0" + day;
    var today = now.getFullYear() + '-' + month + '-' + day;
    $('#date').val(today);
});

2 个答案:

答案 0 :(得分:2)

一个月没有“第二天”。试试这个:

var now = new Date(today.getFullYear(), today.getMonth(), today.getDate()-1);

通过执行此操作,您将创建一个日期为零的新日期对象。会不会打破它?不。 Date构造函数足够聪明,可以确定当前月份的第0天被解释为上个月的最后一天。

其他一切都应该有效,只需摆脱-1行上的var day = ...

var today = new Date();
$(document).ready( function() {
    var now = new Date(today.getFullYear(), today.getMonth(), today.getDate()-1);
    var month = (now.getMonth() + 1);
    var day = now.getDate();
    if(month < 10) 
        month = "0" + month;
    if(day < 10) 
        day = "0" + day;
    var result = now.getFullYear() + '-' + month + '-' + day;
    $('#date').val(result);
});

答案 1 :(得分:2)

你是对的,你不能只-1日期并期望它返回上一个日期。您需要使用setDate()致电-1。这将更新日期对象。

var today = new Date();
today.setDate(today.getDate()-1);
// today is now yesterday