2009-09-30 57 views
0

我有一個文本框的id =「somedate」具有日期值「2009年9月27日」jQuery的減本週日

我正在尋找一個簡單的方法來減去7天,更換價值到09/20/2009。 然後09/13/2009,等...點擊一個按鈕

很明顯,我需要的過程能夠跨越數月和數年。

在jQuery中有這樣做的簡單方法嗎?

回答

1

我不認爲這個工具存在於jQuery中,但有像Datejs這樣的庫(clicky)使管理日期變得更容易。日期數學有太多的陷阱,試圖推出自己的。

Date.parse('Sept 30th, 2009, 10:30 AM').addWeeks(-1); 
0

不是在原生JQuery中,但可能有也可能沒有庫使它更容易一些。我建議你看看JQuery Timepicker插件的內部(或者其中的一個,如果有多個的話),看看他們用的是什麼。

3

除了獲取輸入的內容,我不認爲jQuery與你的問題有很大關係。

您應該查看日期/時間計算的Javascript Date object

+1

謝謝...有意義的是不總是認爲特定於語言或框架。 – Jason 2009-09-30 17:48:25

+0

有時它有助於退後一步,看到那裏(: – Kieron 2009-10-01 07:43:12

0

我的兩分錢:

var d = new Date($("#textbox").attr("value")); 
var nd = new Date(d - new Date(7*24*60*60*1000)); 

function f(s) { return s[1] ? s : "0"+s; }; // ensure string is two chars long 
$("#textbox").attr("value", 
    f((nd.getMonth()+1).toString()) + "/" + 
    f(nd.getDate().toString()) + "/" + 
    nd.getFullYear()); 
1

老問題,但這種使用Date對象的getTime()函數實際上是很容易的。嘗試類似:(使用負值減去)

Date.prototype.addWeeks = function (value) { 
    var milliseconds = this.getTime(); 
    return new Date(milliseconds + (value * 1000 * 60 * 60 * 24 * 7)); 
}; 
0

試試看是否有幫助。

var date = new Date('2013','00','10'); 
/* Here YYYY, Month (00-11), Date (1-31) */ 
alert('the original date is '+date); 
var newdate = new Date(date); 
newdate.setDate(newdate.getDate() - 7); 
var nd = new Date(newdate); 
alert('the new date is '+nd);