我申请了一个API,这种格式不接受:
Thu Apr 12 2018 00:00:00 GMT+0800 (CST)
“start_time”:[“日期格式错误。请使用此类型格式:YYYY-MM-DDThh:mm [:ss [.uuuuuu]] [+ HH:MM | -HH:MM | Z]。”< / p>
我的部分要求:
我的部分请求数据:
Content-Disposition: form-data; name="start_time"
Thu Apr 12 2018 00:00:00 GMT+0800 (CST)
------WebKitFormBoundaryPtZBgjhBEahHBOLY
Content-Disposition: form-data; name="end_time"
Thu May 31 2018 00:00:00 GMT+0800 (CST)
我有两个问题:
Thu Apr 12 2018 00:00:00 GMT+0800 (CST)
是否为日期格式之一?然后有多少种日期格式?
如何将示例日期转换为此格式YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]
?
答案 0 :(得分:0)
你没有说你是怎么得到这个字符串的。如果您有Date对象,则可以使用toISOString生成所需格式的时间戳。回答你的问题:
2018年4月12日星期四00:00 00:00 GMT + 0800(CST)是日期格式之一吗?
没有。 ECMAScript Date对象仅需要解析语言规范ECMA-262中提到的ISO 8601子集。对任何其他格式的支持取决于实现。
通常,您不应该依赖内置的解析器。编写自己的解析器要好得多,或者如果需要支持多种格式,请使用库。有很多好的选择,但最重要的是你必须知道时间戳格式,以确保正确解析它,无论你是使用库还是编写自己的解析器。
然后有多少种类型的日期格式?
Date对象没有任何格式,它只是一个表示UTC时刻的时间值加上一些相当简单的方法。 toString的格式取决于实现,但是toISOString符合ISO 8601.但要使用它需要Date对象,因此您必须将字符串解析为Date才能使用它。 / p>
如何将示例日期转换为此格式YYYY-MM-DDThh:mm [:ss [.uuuuuu]] [+ HH:MM | -HH:MM | Z]?
您可以将其解析为Date(使用您自己的解析器或库),然后使用 toISOString (或等效的库),或者只重新格式化字符串,例如
var s = 'Thu Apr 12 2018 00:00:00 GMT+0800 (CST)';
function toISOString(s) {
var months = {jan:'01',feb:'02',mar:'03',apr:'04',may:'05',jun:'06',
jul:'07',aug:'08',sep:'09',oct:'10',nov:'11',dec:'12'};
var b = s.split(' ');
return b[3] + '-' +
months[b[1].toLowerCase()] + '-' +
('0' + b[2]).slice(-2) + 'T' +
b[4] + b[5].substr(3);
}
console.log(toISOString(s));