请问有人能解释一下 JavaScript 中这种类型的格式吗?
T00:00:00.000Z
如何解析它?
请问有人能解释一下 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());
getUTCHours
、getUTCMinutes
和getUTCSeconds
。否则,你会传递本地时区的行为,这将根据选择的时区和日期而产生不同的结果-由于夏令时的影响。 - Matt Johnson-Pint我建议您使用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时区。 - Matt Johnson-Pint就像可能已经有人建议过的那样,
我直接将 ISO 8601 日期字符串传递给了 moment,如下所示...
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/
既然有人问如何实现:
使用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_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
代替DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
或任何模式,以解决我的问题。下面是我解决问题的方法:
java.time.format.DateTimeParseException: Text '2019-12-18T19:00:00.000Z' could not be parsed at index 10
我曾经遇到过类似的问题,我通过在将日期/时间发送到服务器之前进行转换来解决它:
示例:(UTC巴西)我输入了“15/12/2020 22:30:00”,然后它发送了:“2020-12-16T01: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());
T
代表“时间”,通常用于将日期和时间部分分离。Z
代表该值是基于协调世界时的。 - Matt Johnson-Pint