如何从JavaScript中的string创build一个date对象

有这个string30/11/2011 。 我想将其转换为date对象。

我需要使用:

 Date d = new Date(2011,11,30); /* months 1..12? */ 

要么

 Date d = new Date(2011,10,30); /* months 0..11? */ 

 var d = new Date(2011,10,30); 

因为月份从js的0开始索引。

你肯定希望使用第二个expression式,因为JS中的月份是从0开始枚举的。

您也可以使用Date.parse方法,但它使用不同的date格式:

 var d = Date.parse("11/30/2011"); 

语法如下:

 new Date(year, month, day [, hour, minute, second, millisecond ]) 

所以

 Date d = new Date(2011,10,30); 

是正确的; 小时,分钟,秒,毫秒是可选的。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

如上所述,有多种创builddate的方法。 我不会重复相同的东西。 这里是一个小的方法来转换stringdate在Java脚本如果这是你在找什么,

 function compareDate(str1){ // str1 format should be dd/mm/yyyy. Separator can be anything eg / or -. It wont effect var dt1 = parseInt(str1.substring(0,2)); var mon1 = parseInt(str1.substring(3,5)); var yr1 = parseInt(str1.substring(6,10)); var date1 = new Date(yr1, mon1-1, dt1); return date1; } 

很简单:

 var dt=new Date("2011/11/30"); 

date应采用ISO格式yyyy / MM / dd。

首先像这样提取string

 var dateString = str.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); 

然后,

 var d = new Date( dateString[3], dateString[2]-1, dateString[1] ); 

总是,对于任何有关JavaScript规范的实际问题,我都会强烈推荐Mozilla开发者networking 及其JavaScript引用 。

正如它在Date对象的主题中指出的那样:

 new Date(year, month, day [, hour, minute, second, millisecond ]) 

而关于几个月的参数:

月份整数值表示月份,从1月份的0开始到12月份的11月份。

很明显,那么你应该使用11月份的10号月份。

PS:我推荐MDN的原因是事情的正确性,很好的解释,例子和浏览器的兼容性图表。

我不能相信JavaScript不是更符合parsingdate。 当没有时区会从UTC改变到本地时,我听到默认设置 – 希望网页准备好;)

当谈到parsingdate时,我更喜欢让Javascript完成繁重的工作。 但是,相当透明地处理本地时区问题将会很好。 考虑到这两个方面,这里有一个函数来处理当前的现状 – 当Javascript改变时,它仍然可以工作,但是可以被删除(用一些时间让人们赶上旧的浏览器/ nodejs当然)。

 function strToDate(dateStr) { var dateTry = new Date(dateStr); if (!dateTry.getTime()) { throw new Exception("Bad Date! dateStr: " + dateStr); } var tz = dateStr.trim().match(/(Z)|([+-](\d{2})\:?(\d{2}))$/); if (!tz) { var newTzOffset = dateTry.getTimezoneOffset() / 60; var newSignStr = (newTzOffset >= 0) ? '-' : '+'; var newTz = newSignStr + ('0' + Math.abs(newTzOffset)).slice(-2) + ':00'; dateStr = dateStr.trim() + newTz; dateTry = new Date(dateStr); if (!dateTry.getTime()) { throw new Exception("Bad Date! dateStr: " + dateStr); } } return dateTry; } 

我们需要一个date对象,不pipe; 所以创build一个。 如果有时区,我们就完成了。 否则,请使用+ hh:mm格式(比+ hhmm更接受)创build本地时区string。