如何从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。