从字符串创建日期

时间:2016-01-03 17:54:00

标签: javascript date parsing

我有一个格式如下的字符串:January 3 2016。我尝试过new Date(Date.parse(string)),但我收到了无效的日期警告。我错过了什么吗?我的最终目标是将该日期转换为mm / dd / yyyy格式,我应该能够以Date格式进行格式化。

由于

3 个答案:

答案 0 :(得分:1)

对我来说,它正在工作:Date(Date.parse('January 3 2016'))

答案 1 :(得分:1)

在不使用Date或库的情况下转换/格式化日期字符串的示例。

var monthLookup = {
  january: '01',
  february: '02',
  march: '03',
  april: '04',
  may: '05',
  june: '06',
  july: '07',
  august: '08',
  september: '09',
  october: '10',
  november: '11',
  december: '12'
};

function customParseAndformat(dateString) {
  var parts = dateString.split(' ');
  parts[0] = monthLookup[parts[0].toLowerCase()];
  parts[1] = parts[1] < 10 ? '0' + parts[1] : parts[1];
  return parts.join('/');
}

var myDateString = 'January 3 2016';
document.getElementById('out').textContent = customParseAndformat(myDateString);
<pre id="out"></pre>

您可以使用类似的方法来解析并从离散值创建Date对象,这比Date.parse更可靠(跨环境)。实施例

var monthLookup = {
  january: '01',
  february: '02',
  march: '03',
  april: '04',
  may: '05',
  june: '06',
  july: '07',
  august: '08',
  september: '09',
  october: '10',
  november: '11',
  december: '12'
};

function parseAndCreateDate(dateString) {
  var parts = dateString.split(' ');
  parts[0] = monthLookup[parts[0].toLowerCase()] - 1;
  parts[1] = parts[1] < 10 ? '0' + parts[1] : parts[1];
  return new Date(parts[2], parts[0], parts[1]);
}

var myDateString = 'January 3 2016';
document.getElementById('out').textContent = parseAndCreateDate(myDateString).toDateString();
<pre id="out"></pre>

现在,您可以使用其方法从返回的Date对象进行格式化。

Where can I find documentation on formatting a date in JavaScript?

答案 2 :(得分:0)

在Javascript中解析日期是比较棘手的。它既依赖于浏览器又依赖于文化,这是一个难以应对的挑战。

如果您定位多个浏览器和多个国家/地区,我建议您使用moment.js