这种格式是什么意思T00:00:00.000Z?

Ali*_*ram 53 javascript format time timezone timestamp

请有人在javascript中解释这种格式

 T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

以及如何解析它.

谢谢

nan*_*doj 62

它是ISO-8601日期表示的一部分.它不完整,因为此模式中的完整日期表示还应包含日期:

2015-03-04T00:00:00.000Z //Complete ISO-8601 date
Run Code Online (Sandbox Code Playgroud)

如果您尝试解析此日期,则会收到Invalid Date错误消息:

new Date('T00:00:00.000Z'); // Invalid Date
Run Code Online (Sandbox Code Playgroud)

所以,我想以这种格式解析时间戳的方法是连接任何日期

new Date('2015-03-04T00:00:00.000Z'); // Valid Date
Run Code Online (Sandbox Code Playgroud)

然后你只能提取你想要的部分(时间戳部分)

var d = new Date('2015-03-04T00:00:00.000Z');
console.log(d.getUTCHours()); // Hours
console.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());
Run Code Online (Sandbox Code Playgroud)

  • 关闭 - 你应该使用`getUTCHours`,`getUTCMinutes`和`getUTCSeconds`.否则,您将传递本地时区的行为,这会产生不同的结果,具体取决于您选择的时区和您选择的日期 - 由于DST. (2认同)

小智 8

我建议你用moment.js这个。在moment.js中,您可以:

var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";
Run Code Online (Sandbox Code Playgroud)

现在您已经有了正确的格式,如果有效,请对其进行解析:

var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
Run Code Online (Sandbox Code Playgroud)

并获取时间部分,您可以执行以下操作:

var momentDate = moment(proposedDate)
var hour = momentDate.hours();
var minutes = momentDate.minutes();
var seconds = momentDate.seconds();

// or you can use `.format`:
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z"));
Run Code Online (Sandbox Code Playgroud)

有关momentjs的更多信息http://momentjs.com/

  • 您应该能够立即在构造函数中使用适当的格式字符串来对此进行解析。(如果不包含在当前日期中,则该时刻将采用当前日期。)此外,您可以考虑使用`moment.utc(...)`,使结果值与原始值位于同一UTC区域。 (2认同)

小智 5

正如有人可能已经建议的那样,

我像这样直接将ISO 8601日期字符串传递给 moment...

`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`
Run Code Online (Sandbox Code Playgroud)

或者

`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`
Run Code Online (Sandbox Code Playgroud)

这些解决方案中的任何一个都会为您提供相同的结果。

`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`
Run Code Online (Sandbox Code Playgroud)