2012-08-11 72 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。