【发布时间】:2015-05-11 01:49:14
【问题描述】:
有人可以用javascript解释这种类型的格式
T00:00:00.000Z
以及如何解析它?
【问题讨论】:
-
T表示“时间”,通常将日期与时间部分分开。Z表示以UTC 表示的值 -
以 Z 结尾的日期时间也称为祖鲁时间。
标签: javascript time timezone timestamp format
有人可以用javascript解释这种类型的格式
T00:00:00.000Z
以及如何解析它?
【问题讨论】:
T 表示“时间”,通常将日期与时间部分分开。 Z 表示以UTC 表示的值
标签: javascript time timezone timestamp format
它是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());
【讨论】:
getUTCHours、getUTCMinutes 和 getUTCSeconds。否则,您将传递本地时区的行为,这将产生不同的结果,具体取决于您选择的时区和日期 - 由于 DST。
我建议您为此使用moment.js。在 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"));
关于momentjs的更多信息http://momentjs.com/
【讨论】:
moment.utc(...),因此结果值与原始值位于相同的 UTC 区域。
正如某人可能已经建议的那样,
我像这样直接将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/
【讨论】:
请使用 DateTimeFormatter 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
【讨论】: