我正在尝试将字符串值转换为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);
非常感谢任何提示。
答案 0 :(得分:5)
请试试这段代码
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).
希望有所帮助
答案 1 :(得分:3)
简单的表达式:
new Date("20131120".replace(/(\d{4})(\d{2})(\d{2})/,"$2/$3/$1"))
这是非常基本的正则表达式。
匹配4个号码,匹配2个号码,匹配2个号码组。
使用组$ 1的替换工作是第一场比赛,$ 2是第二场比赛,$ 3是第三场比赛。了解正则表达式。
答案 2 :(得分:2)
在ES5之前,解析日期字符串完全取决于实现。现在已指定a version of ISO8601,但所有正在使用的浏览器都不支持它。所以最好的方法是手动解析它。
所以在这种情况下我会这样做:
var dateString = "20131120";
var m = dateString.match(/\d\d/g);
var date = new Date(m[0] + m[1], --m[2], m[3]);
可以在任何支持javascript的浏览器中使用。
答案 3 :(得分:-2)
您可以做的最好的事情是使用ISO格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS
例如: 新日期('2011-04-11')
或
新日期('2011-04-11T11:51:00')
更多信息:MDN | Date
对于旧的Internet Explorer兼容性(小于9的IE版本在Date构造函数中不支持ISO格式),您应该将日期时间字符串表示形式拆分为它的部分,然后您可以使用构造函数使用日期时间部分,例如:new Date('2011 ','04' - 1,'11','11','51','00')
请注意,月份数必须少1个。