Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串转换为JS日期_Javascript - Fatal编程技术网

Javascript 将字符串转换为JS日期

Javascript 将字符串转换为JS日期,javascript,Javascript,我正在尝试将字符串值转换为JavaScript日期格式,但我似乎找不到一种不必使用datejs等附加库就可以实现的简单方法 var dateString = "20131120"; var date = new Date(dateString); console.log(date); // I need to add an additional day to the original string var newDate = date.getFullY

我正在尝试将字符串值转换为JavaScript日期格式,但我似乎找不到一种不必使用datejs等附加库就可以实现的简单方法

var dateString = "20131120";
    var date       = new Date(dateString);
console.log(date);
     // I need to add an additional day to the original string
    var newDate    = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + (date.getDate()+1);
console.log(newDate);
非常感谢任何提示。

简单的注册表表达式:

new Date("20131120".replace(/(\d{4})(\d{2})(\d{2})/,"$2/$3/$1"))
它是非常基本的正则表达式

分组匹配4个数字,匹配2个数字,匹配2个数字


替换通过使用组来工作$1是第一个匹配,$2是第二个匹配,$3是第三个匹配。了解正则表达式。

你能试试这段代码吗

 var dateString  = "20131120";
    var year        = dateString.substring(0,4);
    var month       = dateString.substring(4,6);
    var day         = dateString.substring(6,8);
    var date        = new Date(year, month-1, day);
这里只使用了简单的子字符串方法

First (0,4) will extract the year then next two is for month and next two is for day of month

  NOTE:
    Here we doing  `month-1` because it will count from 0 e.g (january==0).

希望对您有所帮助

您最好使用ISO格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS

例如: 新日期('2011-04-11')

新日期('2011-04-11T11:51:00')

有关更多信息:

为了与旧的Internet Explorer兼容(即小于9的版本不支持日期构造函数中的ISO格式),您应该将日期时间字符串表示形式拆分为各个部分,然后您可以使用使用日期时间部分的构造函数,例如:新日期('2011','04'-1',11','51','00'))


请注意,月份数必须小于1。

在ES5之前,日期字符串的解析完全依赖于实现。现在已指定,但并非所有正在使用的浏览器都支持它。因此,最好的方法是手动解析它

所以在这种情况下,我会:

var dateString = "20131120";
var m = dateString.match(/\d\d/g);
var date = new Date(m[0] + m[1], --m[2], m[3]);

它可以在任何支持javascript的浏览器中使用。

嗯,这看起来不像是一种常见的可识别日期格式。将其拆分为Y/M/D部分并传递distinctly@Bergi谢谢你的信息。我无法控制输出,无法更改其格式!如果这是一个选项,我建议使用像moment.js或date.js这样的库,而不是直接使用date。如果只想转换date???@digitup,“output”可能意味着你想象不到的东西。:)只需修改输入,看起来效果不错。测试。我很想知道这个正则表达式是怎么回事?你能解释一下吗?像你问的那样在上面加上解释。我真的很感激,现在我认为不选择这个作为答案是不公平的。您是否知道此解决方案存在任何浏览器不兼容问题?让我告诉您;多年来,我一直在努力学习正则表达式,但我还有很长的路要走:-)每天学习新东西。非常感谢您分享您的知识,这是完美的工作。以前从未见过这样的解决方案。它与Bhavik的相同,但使用match而不是substring(因此我给了他一个+1)。非常感谢+1浏览器支持+1,因为它没有使用其他库,n basic substring func提取日期。