2012-10-23 58 views
3

可能重复:
Finding date by subtracting X number of days from a particular date in Javascriptjavascript日期操纵

我有一个jQuery datepicker它允许用户选择一个周五的任何一周。我想填充那个星期五的字段,并输入星期一到星期四的日期。

I.e.用户挑选本周五(2012年10月26日),我想从1天减去拿到周四日期,然后星期三,等等等等

我将如何处理这?

$(document).ready(function(){ 
     $("#friDate").Zebra_DatePicker({ 
      format: 'm-d-Y', 
      disabled_dates: ['* * * 0-4,6'], 
      first_day_of_week: 0, 
      onSelect: function(){ 
       var date = $("#friDate").val(); 
       $("#mon").val('INSERT MON DATE'); 
       $("#tue").val('INSERT TUE DATE'); 
       $("#wed").val('INSERT WED DATE'); 
       $("#thu").val('INSERT THU DATE'); 
       $("#fri").val(date);      
      } 
     }); 
    }); 

任何帮助,不胜感激!谢谢 :)。

+0

使用日期操作库可能是最简单的赌注。搜索'date.js'。 – ahren

+0

谢谢,我会这么做 – FunkyMonk91

+0

你看过[Date()]的文档吗(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date)? – epascarello

回答

5

要从现有日期减去一天,只需减去一天中的毫秒数。

var today = new Date(); 
var yesterday = new Date(today.getTime() - 1000*60*60*24); 

// As pointed out by Waxen, we need to account for daylight savings changes 
function addDays(date, days) { 
    var newDate = new Date(date.getTime() + (1000*60*60*24*days)); 
    // To account for daylight savings differences 
    // The hours won't be the same when crossing the daylight savings changes 
    var hourDifference = newDate.getHours() - date.getHours(); 
    var msInHour = 60*60*1000; 
    if (hourDifference > 0) { 
     newDate = new Date(newDate.getTime() + msInHour) ; 
    } else if (hourDifference < 0){ 
     newDate = new Date(newDate.getTime() - msInHour) ;  
    }  
    return newDate;  
} 

因此,对于你的代码,你可以做以下

$("#mon").val(addDays(date, -4)); 
$("#tue").val(addDays(date, -3)); 
$("#wed").val(addDays(date, -2); 
$("#thu").val(addDays(date, -1)); 
$("#fri").val(date);    

UPDATE虽然我的代码工作,蜡黄的解决方案是简单的,我会使用它。我将在这里离开这个答案以供参考

+0

阿哈哈我觉得自己像个傻瓜。非常感谢你,那很完美! – FunkyMonk91

+1

@ FunkyMonk91感谢Waxen,我改进了功能,因此它也适用于夏令时的变化 –

2

娟的soulution将工作的大部分时间,但在一天内作出有关的秒数的假设时,你可以运行与DST的一些问题。我建议使用他的addDays函数的下列替代实现:

function addDays(date, days) { 
    var new_date = new Date(date.getTime()); 
    new_date.setDate(new_date.getDate() + days); 
    return new_date; 
} 
+0

我如何获得以m-d-y格式返回给我的日期? – FunkyMonk91

+2

@ FunkyMonk91这是一个新问题,你应该在SO上进行搜索,如果你找不到适合你的答案,你应该发布一个新问题。每个岗位有一个问题让 –

+0

@Waxen在此处,回落时一个小时 –