这个格式是什么意思 T00.00.000Z?

有没有人能用 javascript 解释一下这种格式

 T00:00:00.000Z

怎么解析呢?

550143 次浏览

这是 ISO-8601日期表示法的一部分。这是不完整的,因为这个模式中的完整日期表示还应该包含日期:

2015-03-04T00:00:00.000Z //Complete ISO-8601 date

如果您试图解析这个日期,您将收到一个 Invalid Date错误:

new Date('T00:00:00.000Z'); // Invalid Date

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

new Date('2015-03-04T00:00:00.000Z'); // Valid Date

然后您可以只提取您想要的部分(时间戳部分)

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

我建议你使用 moment.js来做这个。在这一刻,你可以:

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

现在您已经有了一段时间的正确格式,如果它是有效的,请解析它:

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

为了获得时间部分,你可以这样做:

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"));

更多关于瞬间的信息

正如一个人可能已经建议过的,

我通过 ISO 8601日期字符串直接到时刻就像这样..。

moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')

或者

moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')

这两种解决方案中的任何一种都会给出相同的结果。

console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019

更多关于瞬间的信息

请使用 DateTimeFormatter ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME; 而不是 DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")或任何模式

这解决了我下面的问题

无法在索引10处解析文本“2019-12-18T19:00.00.000 Z”

因为有人问如何实现它:

使用 瞬间很简单:

// install using yarn
yarn add moment
// or install using npm
npm i moment

然后你可以像这样根据你想要的格式提取日期:

import 'moment' from moment;


let isoDate = "2021-09-19T05:30:00.000Z";


let newDate =  moment.utc(isoDate).format('MM/DD/YY');
console.log('converted date', newDate); // 09/23/21
 

let newDate2 = moment.utc(isoDate).format("MMM Do, YYYY");
console.log('converted date', newDate2); // Sept 24, 2021

我也遇到过类似的问题,在发送到服务器之前,我通过转换日期/时间解决了这个问题,方法是:

示例: (UTC Brazil)我输入“ 15/12/2020 22:30:00”,它发送: “2020-12-16T一点半:00.000 Z”。 使用以下方法转换:

var date = new Date('2020-11-06T01:30:00.000Z');
console.log(date.toLocaleDateString());
console.log(date.toLocaleString());
console.log(date.toLocaleTimeString());