在javascript中初始化的日期对象

时间:2013-12-24 10:06:11

标签: javascript date object

我在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é))

我完全理解为什么在创建日期对象时初始化日期的值。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

似乎日期字符串的顺序相反,您可以使用

修复它
var str = '05/10/2013';
var date = new Date(str.split('/').reverse().join('/'));
date.setMonth(date.getMonth() - 1);

FIDDLE

答案 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]);