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