我们将日期转换为locale string
。例如:
x = (new Date()).toLocaleString()
和x有值
"20.05.2018, 10:21:37"
如何将此字符串处理为Date
对象。
我被试了
new Date(x)
Invalid Date
和
Date.parse(x)
NaN
如果没有像moment.js
这样的外部库,可以轻松完成吗?
答案 0 :(得分:2)
您可以自己解析它。
const date = "20.05.2018, 10:21:37";
const [first, second] = date.split(',').map(item => item.trim());
const [day, month, year] = first.split('.');
const [hours, minutes, seconds] = second.split(':');
const newDate = new Date(year, month - 1, day, hours, minutes, seconds);
console.log(newDate);
或使用正则表达式
const date = "20.05.2018, 10:21:37";
const m = /^(\d{2})\.(\d{2})\.(\d{4}), (\d{2}):(\d{2}):(\d{2})$/.exec(date);
const newDate = new Date(m[3], m[2] - 1, m[1], m[4], m[5], m[6]);
console.log(newDate);
答案 1 :(得分:1)
可以使用Intl.DateTimeFormat.prototype.formatToParts()
获取日期格式,而无需事先知道。
// should default to toLocaleDateString() format
var formatter = Intl.DateTimeFormat()
// I suggest formatting the timestamp used in
// Go date formatting functions to be able to
// extract the full scope of format rules
var dateFormat = formatter.formatToParts(new Date(1136239445999))
在我的机器dateFormat
上产生
[
{type: "month", value: "1"},
{type: "literal", value: "/"},
{type: "day", value: "3"},
{type: "literal", value: "/"},
{type: "year", value: "2006"},
]
通过遍历此数组,将字符串解析为部分然后将其填充到Date
对象中应该是可行的。