我有一个字符串,其日期格式为:dd-mm-yyyy
如何为字符串添加4周,然后使用jQuery / Javascript生成新字符串?
我有
var d = new Date(current_date);
d.setMonth(d.getMonth() + 1);
current_date_new = (d.getMonth() + 1 ) + '-' + d.getDate() + '-' + d.getFullYear();
alert(current_date_new);
但它抱怨提供的字符串格式不正确
答案 0 :(得分:2)
编辑:稍等fiddling后,这是解决方案:
首先,将字符串拆分为各个部分。
var inputString = "12-2-2005";
var dString = inputString.split('-');
然后,将字符串解析为日期时间对象,并向其添加28天(4周)。
var dt = new Date(dString[2],dString[1]-1,dString[0]);
dt.setDate(dt.getDate()+28);
最后,您可以输出日期
var finalDate = dt.GetDate() + "-" + (dt.GetMonth()+1) + "-" + dt.GetYear();
此代码应返回12-3-2005
。
CAVEATS:似乎JavaScript的Date对象将0-11作为月份字段,因此代码中的月份为-1和+1。
EDIT2:要进行填充,请使用此功能:
function pad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
并将输出更改为
var finalDate = pad(dt.GetDate(),2) + "-" + pad(dt.GetMonth()+1,2) + "-" + dt.GetYear();
检查更新的小提琴。
答案 1 :(得分:0)
无需通过减号转换为mm-dd-yyyy,简单拆分字符串,并使用以下代码创建新的Date对象:
var string = '12-02-2012';
var split = string.split('-');
var date = Date(split[2],parseInt(split[1])-1,parseInt(split[0])+1)
date.setDate(date.getDate() + 28);
var fourWeeksLater = date.getDay() + "-"+date.getMonth() +"-"+date.getYear();
答案 2 :(得分:0)
这应该有效:
var formattedDate = '01-01-2012',
dateTokens = formattedDate.split('-'),
dt = new Date(dateTokens[2], parseInt( dateTokens[1], 10 ) - 1, dateTokens[0]), // months are 0 based, so need to add 1
inFourWeeks = new Date( dt.getTime() + 28 * 24 * 60 * 60 * 1000 );
jsfiddle:http://jsfiddle.net/uKDJP/
修改强>
使用Globalize,您可以格式化为四周:
Globalize.format( inFourWeeks, 'dd-MM-yyyy' ) // outputs 29-01-2012
答案 3 :(得分:0)