我有一个日期,从JSON返回,格式如下:
YYYYMMDDThhmmssZ
我想在Javascript中解析它。我找到了一些资源,将这种格式编目为ISO-8601 基本格式,这与扩展格式略有不同,如下所示:
YYYY-MM-DDThh:mm:ssZ
我找到了一些如何解析扩展格式的资源,但到目前为止我还没有找到任何解析基本格式的资源。这些功能是否存在于Javascript的Date模块中,或者我必须使用其他模块(例如Moment)?我问,因为这对我来说不是一个选项,因为我正在开发的应用程序是一个gnome-shell扩展,我不想有任何额外的依赖。
答案 0 :(得分:1)
如果您不能使用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'));

切出复合材料零件相当简单。唯一的怪癖是1月是第0个月(因此是- 1
)并且Date构造函数假定您的参数是本地时间,因此我们遵循Date
文档中给出的建议:< / p>
注意:如果将Date作为具有多个参数的构造函数调用,则指定的参数表示本地时间。如果需要UTC,请使用
new Date(
Date.UTC(...)
)
使用相同的参数。
我省略了格式检查,但是如果你需要它,你可以定义一个正则表达式来检查你的输入(我推荐一些不比/^[0-9]{8}T[0-9]{6}Z$/
更复杂的东西,然后让{{1做它的事情。)
如果您可以使用moment.js,它已经支持解析此格式:
Date.UTC(...)
&#13;
console.log(moment('20130208T080910Z', 'YYYYMMDDTHHmmssZ'));
&#13;