我在JS中格式化了一个日期对象,但日期改变了它的值:
str = '05-10-2013';
s = str.split('-')
nbr = Number(s[0]) + '-' + (Number(s[1]) - 1) + '-' + Number(s[2]);
// nbr has now the value : 5-9-2013
// so I create the date object from the str
var dateObj = new Date(nbr);
// the dateObj has the value: Tue Apr 04 1911 00:00:00 GMT+0200 (Paris, Madrid (heure d’été))
我完全理解为什么在创建日期对象时初始化日期的值。
我做错了什么?
答案 0 :(得分:1)
似乎日期字符串的顺序相反,您可以使用
修复它var str = '05/10/2013';
var date = new Date(str.split('/').reverse().join('/'));
date.setMonth(date.getMonth() - 1);
答案 1 :(得分:1)
不要再将其转换回字符串,而是将其正常传递给函数。
str = '05/10/2013';
s = str.split('/')
dateObj = new Date(s[2], s[1]-1, s[0]);
//dateObj: Date {Sat Oct 05 2013 00:00:00 GMT+0100 (GMT Daylight Time)}
答案 2 :(得分:1)
您可以使用str变量作为Date对象构造函数的参数:
var dateObj = new Date(str);
带字符串参数的日期构造函数接受月/日/年;所以,如果你想要10月5日的05/10/2013比赛使用" 10/05 / 2013"串。或者:
str = '05/10/2013';
s = str.split('/');
var dateObj = new Date(s[1]+'/'+s[0]+'/'+s[2]);