更新
如果您不能使用 moment.js 并且您可以依赖所描述的输入格式,那么请考虑使用以下内容自己解析它:
function parseDate(input) {
return new Date(Date.UTC(
parseInt(input.slice(0, 4), 10),
parseInt(input.slice(4, 6), 10) - 1,
parseInt(input.slice(6, 8), 10),
parseInt(input.slice(9, 11), 10),
parseInt(input.slice(11, 13), 10),
parseInt(input.slice(13,15), 10)
));
}
console.log(parseDate('20130208T080910Z'));
切出复合部件相当简单。唯一的怪癖是一月是第 0 个月(因此是- 1
),并且 Date 构造函数假定您的参数是本地时间的,因此我们遵循Date
文档中给出的建议:
注意:如果 Date 被称为具有多个参数的构造函数,则指定的参数表示本地时间。如果需要 UTC,请使用相同的参数。new Date(
Date.UTC(...)
)
我省略了格式检查,但如果你需要它,你可以定义一个正则表达式来检查你的输入(我推荐一些不比 更复杂的东西/^[0-9]{8}T[0-9]{6}Z$/
,然后让它Date.UTC(...)
做它的事情)。
旧答案,已更新以明确指定格式字符串
如果你可以使用moment.js,它已经支持解析这种格式:
console.log(moment('20130208T080910Z', 'YYYYMMDDTHHmmssZ'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>