2009-07-27 114 views
46

我想通過在JavaScript中從特定日期減去X天來找到日期。我的JavaScript函數接受2個參數。一個是日期值,另一個是需要減去的天數。查找日期從Javascript中的特定日期減去X天數

例如,我把我的論點日期定爲2009年7月27日,我將其他論點作爲3.所以我想在2009年7月27日前3天計算日期。所以我們應該得到的結果日期是7月24日這在JavaScript中是如何實現的。謝謝你的幫助。

回答

81

簡單:

yourDate.setDate(yourDate.getDate() - daysToSubtract); 
+1

十分感謝! – ajithmanmu 2009-07-27 12:22:44

+3

我不認爲這將工作,除非當月的當天比你正在減去的日子多。 – tvanfosson 2009-07-27 12:27:18

+2

...比如今天它的工作時間是-3,因爲今天是27日(在美國,但如果今天是第二天,你最終會得到新的日期爲-1,如果你嘗試設置setDate會死這個月的一天到一個負數 – tvanfosson 2009-07-27 12:34:06

1

下面是一個例子,但是這確實毫不客氣的檢查(例如,如果您使用它在2009/7/1它會使用負一天或拋出一個錯誤的

function subDate(o, days) { 
// keep in mind, months in javascript are 0-11 
return new Date(o.getFullYear(), o.getMonth(), o.getDate() - days);; 
} 
0

這是我會怎麼做。請注意,您可以簡化表達,我只是寫出來講清楚你是毫秒的一天數量乘以天數。

var newDate = new Date(yourDate.getTime() - (days * 24 * 60 * 60 * 1000)); 
0

只是另一種選擇,我寫道:

DP_DateExtensions Library

這可能是矯枉過正,如果你想要做的是一個計算的,但如果你打算做更多的日期操作,你可能會發現它很有用。

支持日期/時間格式,日期數學(加/減日期部分),日期比較,日期解析等

22
function date_by_subtracting_days(date, days) { 
    return new Date(
     date.getFullYear(), 
     date.getMonth(), 
     date.getDate() - days, 
     date.getHours(), 
     date.getMinutes(), 
     date.getSeconds(), 
     date.getMilliseconds() 
    ); 
} 
2

我在這裏發佈一個更答案,將在特定的格式返回日期。

首先,你可以得到當前的日期2013年10月如下

function Cureent_Date() { 
    var today_GMT = new Date(); 
    var dd = today_GMT.getDate(); 
    var mm = today_GMT.getMonth() + 1; //January is 0! 
    var yyyy = today_GMT.getFullYear(); 
    if (dd < 10) { 
     dd = '0' + dd 
    } 
    if (mm < 10) { 
     mm = '0' + mm 
    } 
    current_date = mm + '/' + dd + '/' + yyyy; 
    alert("current_date"+current_date); 

    Back_date(); 
} 

X

現在回去日期基地
function Back_date() 
{  
    var back_GTM = new Date(); back_GTM.setDate(back_GTM.getDate() - 2); // 2 is your X 
    var b_dd = back_GTM.getDate(); 
    var b_mm = back_GTM.getMonth()+1; 
    var b_yyyy = back_GTM.getFullYear(); 
    if (b_dd < 10) { 
     b_dd = '0' + b_dd 
    } 
    if (b_mm < 10) { 
     b_mm = '0' +b_mm 
    } 

    var back_date= b_mm + '/' + b_dd + '/' + b_yyyy; 
    alert("back_date"+back_date); 
} 

所以,今天是10/08/2013所以將返回10/06/2013

Check Live Demo here 希望這個回答對你有幫助。

6

永遠不要爲此解決方案 yourDate.setDate(yourDate.getDate() - daysToSubtract);

它的情況下,不會工作的日期是每月的1日和要刪除一些天說1

而是去下面的解決方案,將工作始終

VAR newDate =新的日期(yourDate 。getTime() - (days * 24 * 60 * 60 * 1000));

0

這是參照上面的回答 檢查此琴

https://jsfiddle.net/uniyalguru/azh65aa0/

function Cureent_Date() { 
var today_GMT = new Date(); 
var dd = today_GMT.getDate(); 
var mm = today_GMT.getMonth() + 1; //January is 0! 
var yyyy = today_GMT.getFullYear(); 
if (dd < 10) { 
    dd = '0' + dd 
} 
if (mm < 10) { 
    mm = '0' + mm 
} 
current_date = mm + '/' + dd + '/' + yyyy;