Javascript将字符串转换为日期

时间:2015-04-16 00:05:29

标签: javascript date

如何转换字符串,如" 20150415"格式化日期" 2015年4月15日"?我已经阅读了几个例子,但它们都涉及与" - "或" /",但那些不适用于我的案例。

这是我目前的代码:

var d = parseInt(document.getElementById('date').value);
d =  new Date(d[4], d[2] - 1, d[2]);
document.getElementById('date').value = d;  

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您似乎拥有"YYYYMMDD"形式的字符串。要获得各个部分,您只需要提取子字符串。一种方法是使用正则表达式:

> "20150415".match(/(\d{4})(\d{2})(\d{2})/)
["20150415", "2015", "04", "15"]

然后,您可以将各个部分(年,月,日)传递给Date构造函数。

但请注意,JavaScript没有内置支持格式化日期。为此你可能想要使用一个库。见Where can I find documentation on formatting a date in JavaScript?

答案 1 :(得分:0)

虽然@“Felix Kling”的解决方案更好,但我提出了一个简单的解决方案:

var d = "20150415";
//Extract 4 first letters and convert to integer, similarly with month and day
var year = parseInt(d.substr(0,4));    
//subtract one since the index of the months begin in zero (january=0)
var month = parseInt(d.substr(4,2))-1;
var day = parseInt(d.substr(6,2));
d =  new Date(year, month, day); // d store expected result

答案 2 :(得分:0)

这是一个日期格式化程序,它接受字符串'20150415'并返回字符串'April 4, 2015'。您可以通过修改DateFormat.toLong的最后一行来调整日期格式。

var DateFormat = {
  months: ['January', 'February', 'March', 'April', 'May', 'June',
           'July', 'August', 'September', 'October', 'November', 'December'],
  toLong: function toLongDate(s) {  // s is a string like '20150415'
    var year = parseInt(s.substring(0, 4), 10),
        month = DateFormat.months[parseInt(s.substring(4, 6), 10) - 1],
        day = parseInt(s.substring(6), 10);
    return month + ' ' + day + ', ' + year;
  }
};

// A small test.
alert(DateFormat.toLong('20150415'));

请注意,我将第二个参数传递给parseInt以指示字符串表示的数字位于基数10.如果未指定基数10,则可以将以数字0开头的字符串解析为虽然他们在8号基地。

您可以在Mozilla Developer Network上的JavaScript文档中阅读此内容:

  

如果输入字符串以“0”开头,则基数为八(八进制)或10(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。 因此,在使用parseInt时始终指定基数。

答案 3 :(得分:0)

试试这个:

var months = ['January', 'February', 'March', 'April', 'May', 'June',
           'July', 'August', 'September', 'October', 'November', 'December'];
var fmt = function(str) {
  var arr = str.match(/^(\d{4})(\d{2})(\d{2})$/);
  arr.splice(0, 1);
  arr[1] = months[+(arr[1]) - 1];
  return arr.join(", ");
};

alert(fmt('20150412'));//"2015, April, 12"