2012-08-11 46 views
2

我正在嘗試通過Javascript自動更新日期。下面的代碼是一個例子,其中數字每次增加1,但我還需要每次增加一個月來更新下一列中的日期。用Javascript更新日期

function repeater_update_order(repeater) 
{ 
    repeater.find('> table > tbody > tr.row').each(function(i){ 
     $(this).children('td.order').html(i+1); 
    }); 

}; 

我知道,你可以使用更新以下JavaScript日期:

var x = 1; //or whatever offset 
var CurrentDate = new Date(); 
CurrentDate.setMonth(CurrentDate.getMonth()+X); 

我如何使用這個第二個代碼更新字段中的日期?

非常感謝

+0

取決於您想如何格式化日期,儘管有方法可以獲取Date對象的字符串表示形式。查看[MDN條目](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date) – 2012-08-11 15:01:19

+2

小心修改月份。它將從「3月31日」到「5月01日」而不是「4月30日」。 – DCoder 2012-08-11 15:02:15

+1

This works:'var d = new Date(); d = new Date(d.getFullYear(),d.getMonth()+ 1,1)'http://jsfiddle.net/mplungjan/Vb94B/ – mplungjan 2012-08-11 15:17:58

回答

0

在你的HTML,該表的日期值是我們解釋爲日期字符串。您需要將該字符串解析爲JS Date對象,添加一個月並重新轉換爲原始字符串格式。

如果像你說的,日期是總是在第一個月,那麼你可以短cicuit通過解析和一個功能轉換的過程:

function nextMonth (d) { 
    d = d.match (/^(.*)(\d\d)/(\d\d)/(d\d\d\d)(.*)$/ 
    return d ? d[0] + d[1] + '/' + (d[2] < 11 ? +d[2] + 1 : 1) + '/' + (d[2] >= 11 ? 1 + +d[3] : d[3]) + d[4]; 
    } 

這假定數據總是存儲在格式爲dd/mm/yyyy的字符串。如果你的格式不同,你需要做相應的調整。

如果你的格式很複雜或不一致,那麼你可以考慮使用日期庫,如Datejs。