使用Javascript根据未来日期获取上一个日期

时间:2013-08-09 19:44:08

标签: javascript jquery

理想情况下,我想要做的是将输入字段附加一个日期选择器,例如,有人选择未来的日期。 [今天是2013年9月8日,在撰写本文时,将获得2013年7月31日的回复。]

我想要的是,无论选择什么日期,使用javascript的输入字段都会将值默认为星期三之前的星期三 - 这是初始选定的日期值。

function getWednesday(date) {
    var d = (date.getDay() == 0 ? 6 : date.getDay() - 3);
    date.setTime(date.getTime() - (d * 24 * 60 * 60 * 1000));
    return date;
}

这只会返回当周的星期三。我对javascript函数getDay的理解只返回代表sun-sat的0-6。自1970年1月1日起,setTime函数需要一个毫秒的字符串并转换为实际的日期,而getTime则完全相反。我不确定我是否采用正确的方法来解决问题。在此先感谢您的任何帮助

5 个答案:

答案 0 :(得分:1)

好的,这是我能想到的最聪明的方式:

function prevWed(inDate){
  var adder=(3-inDate.getDay());
  var d=new Date(inDate.getFullYear(), inDate.getMonth(), inDate.getDate() + adder - 7);
  return d
}

更小:

return new Date(inDate.getFullYear(), inDate.getMonth(), inDate.getDate() + (3-inDate.getDay()) - 7);

这会有用吗?

答案 1 :(得分:0)

您可以调整您的功能以包含此内容:

function getWednesday(date) {
    var d = (date.getDay() == 0 ? 6 : date.getDay() - 3);
    date.setTime(date.getTime() - (d * 24 * 60 * 60 * 1000));
    return new Date(date.getFullYear(), date.getMonth(), date.getDate()-7);
}
alert(getWednesday(new Date()));

我认为这应该有用。

答案 2 :(得分:0)

var date = new Date();
var wednesday = new Date(date.setDate(date.getDate() - ((date.getDay() == 0 ? 7 : date.getDay()) + 4)));

计算今天的天数(5)+从上周减去的天数到星期三。

答案 3 :(得分:0)

            var d = date.getDay();
        if (d == 0) {
            date.setTime((date.getTime() - 604800000) + 86400000 * 3);
            return date;
        }
        else if (d == 1) {
            date.setTime((date.getTime() - 604800000) + 86400000 * 2);
            return date;
        }
        else if (d == 2) {
            date.setTime((date.getTime() - 604800000) + 86400000 );
            return date;
        }
        else if (d == 4) {
            date.setTime((date.getTime() - 604800000) - 86400000 );
            return date;
        }
        else if (d == 5) {
            date.setTime((date.getTime() - 604800000) - 86400000 * 2);
            return date;
        }
        else if (d == 6) {
            date.setTime((date.getTime() - 604800000) - 86400000 * 3);
            return date;
        }
        else date.setTime(date.getTime() - 604800000);
        return date;

这实际上得到的解决方案我想要一点笨重的想法...大声笑

答案 4 :(得分:0)

多数民众赞成应该在任何特定日期和时间之前结婚

Live Demo

var x = new Date('8/1/2013') ;
var wed ;
for(var i=7 ; i > 0 ; i--){
    var myday = x.getTime() - (i * 24 * 60 * 60 * 1000) ;
    var d = new Date(myday) ;

    if(!!~String(d).indexOf('Wed')) wed = d  

}
 console.log(wed) ;