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

What does this format mean T00:00:00.000Z?

本文关键字:000Z T00 意思 格式 是什么      更新时间:2023-09-26

有人可以,请,用javascript解释这种类型的格式

 T00:00:00.000Z

以及如何解析它?

它是 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。在瞬间.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"));

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

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

我直接将 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

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

请使用日期时间格式化程序ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;而不是DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")或任何模式

这解决了我的问题

java.time.format.DateTimeParseException:无法在索引 10 处解析文本"2019-12-18T19:00:00.000Z"

既然有人问如何实现它:

它很容易使用momentjs:

// 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

现有的答案已经解决了这个问题。我还发现这个时间戳转换器很有帮助,它提供了一种快速处理 ISO 8601 和其他时间戳的方法。它将帮助您解码和编码特定时间:

https://time.lol/

我有类似的问题,我通过在发送到服务器之前转换日期/时间来解决它,使用:

示例:(UTC 巴西)我输入"15/12/2020 22:30:00",它发送:"2020-12-16 T01:30:00.000Z"。您可以使用以下方法进行转换:

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