Tbedeutet "Zeit" und trennt normalerweise das Datum von der Zeitkomponente. Zbedeutet, dass der Wert in UTC angegeben ist
Matt Johnson-Pint
Antworten:
84
Es ist Teil der Datumsdarstellung nach ISO-8601 . Es ist unvollständig, da eine vollständige Datumsdarstellung in diesem Muster auch das Datum enthalten sollte:
2015-03-04T00:00:00.000Z //Complete ISO-8601 date
Wenn Sie versuchen, dieses Datum so zu analysieren, wie es ist, erhalten Sie eine Invalid DateFehlermeldung:
newDate('T00:00:00.000Z'); // Invalid Date
Ich denke, der Weg, einen Zeitstempel in diesem Format zu analysieren, besteht darin, sich auf ein beliebiges Datum zu konzentrieren
newDate('2015-03-04T00:00:00.000Z'); // Valid Date
Dann können Sie nur das gewünschte Teil extrahieren (Zeitstempelteil)
var d = newDate('2015-03-04T00:00:00.000Z');
console.log(d.getUTCHours()); // Hoursconsole.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());
Close - sollten Sie verwenden getUTCHours, getUTCMinutesund getUTCSeconds. Andernfalls geben Sie das Verhalten der lokalen Zeitzone an, was je nach Zeitzone und ausgewähltem Datum aufgrund der Sommerzeit zu unterschiedlichen Ergebnissen führt.
Matt Johnson-Pint
12
Ich schlage vor, Sie verwenden moment.jsdafür. In moment.js können Sie:
var localTime = moment().format('YYYY-MM-DD'); // store localTimevar proposedDate = localTime + "T00:00:00.000Z";
Nachdem Sie eine Zeit lang das richtige Format haben, analysieren Sie es, wenn es gültig ist:
var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
und um Zeitteile zu erhalten, können Sie etwas tun wie:
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"));
Sie sollten in der Lage sein, dies direkt im Moment-Konstruktor mit einer geeigneten Formatzeichenfolge zu analysieren. (Moment nimmt das aktuelle Datum an, wenn es nicht Teil des Werts ist.) Sie können auch berücksichtigen, moment.utc(...)dass sich der resultierende Wert in derselben UTC-Zone befindet wie der ursprüngliche Wert.
Matt Johnson-Pint
3
Wie eine Person vielleicht bereits vorgeschlagen hat,
Ich habe die ISO 8601- Datumszeichenfolge direkt an einen Moment wie diesen übergeben ...
T
bedeutet "Zeit" und trennt normalerweise das Datum von der Zeitkomponente.Z
bedeutet, dass der Wert in UTC angegeben istAntworten:
Es ist Teil der Datumsdarstellung nach ISO-8601 . Es ist unvollständig, da eine vollständige Datumsdarstellung in diesem Muster auch das Datum enthalten sollte:
2015-03-04T00:00:00.000Z //Complete ISO-8601 date
Wenn Sie versuchen, dieses Datum so zu analysieren, wie es ist, erhalten Sie eine
Invalid Date
Fehlermeldung:new Date('T00:00:00.000Z'); // Invalid Date
Ich denke, der Weg, einen Zeitstempel in diesem Format zu analysieren, besteht darin, sich auf ein beliebiges Datum zu konzentrieren
new Date('2015-03-04T00:00:00.000Z'); // Valid Date
Dann können Sie nur das gewünschte Teil extrahieren (Zeitstempelteil)
var d = new Date('2015-03-04T00:00:00.000Z'); console.log(d.getUTCHours()); // Hours console.log(d.getUTCMinutes()); console.log(d.getUTCSeconds());
quelle
getUTCHours
,getUTCMinutes
undgetUTCSeconds
. Andernfalls geben Sie das Verhalten der lokalen Zeitzone an, was je nach Zeitzone und ausgewähltem Datum aufgrund der Sommerzeit zu unterschiedlichen Ergebnissen führt.Ich schlage vor, Sie verwenden
moment.js
dafür. In moment.js können Sie:var localTime = moment().format('YYYY-MM-DD'); // store localTime var proposedDate = localTime + "T00:00:00.000Z";
Nachdem Sie eine Zeit lang das richtige Format haben, analysieren Sie es, wenn es gültig ist:
var isValidDate = moment(proposedDate).isValid(); // returns true if valid and false if it is not.
und um Zeitteile zu erhalten, können Sie etwas tun wie:
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"));
Weitere Informationen zu momentjs http://momentjs.com/
quelle
moment.utc(...)
dass sich der resultierende Wert in derselben UTC-Zone befindet wie der ursprüngliche Wert.Wie eine Person vielleicht bereits vorgeschlagen hat,
Ich habe die ISO 8601- Datumszeichenfolge direkt an einen Moment wie diesen übergeben ...
`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`
oder
`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`
Mit jeder dieser Lösungen erhalten Sie das gleiche Ergebnis.
`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`
quelle
Bitte verwenden Sie DateTimeFormatter
ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
anstelle einesDateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
MustersDies hat mein Problem unten behoben
quelle