¿Alguien, por favor, puede explicar este tipo de formato en javascript?
T00:00:00.000Z
¿Y cómo analizarlo?
¿Alguien, por favor, puede explicar este tipo de formato en javascript?
T00:00:00.000Z
¿Y cómo analizarlo?
T
significa "hora" y normalmente separa la fecha del componente de hora. Z
significa que el valor está en términos de UTC
Respuestas:
Es parte de la representación de fechas ISO-8601 . Está incompleto porque una representación de fecha completa en este patrón también debe contener la fecha:
2015-03-04T00:00:00.000Z //Complete ISO-8601 date
Si intenta analizar esta fecha tal como está, recibirá un Invalid Date
error:
new Date('T00:00:00.000Z'); // Invalid Date
Entonces, supongo que la forma de analizar una marca de tiempo en este formato es concatizar con cualquier fecha
new Date('2015-03-04T00:00:00.000Z'); // Valid Date
Luego puede extraer solo la parte que desee (parte de marca de tiempo)
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
y getUTCSeconds
. De lo contrario, está transmitiendo el comportamiento de la zona horaria local, que producirá resultados diferentes según la zona horaria y la fecha que elija, debido al horario de verano.
Le sugiero que lo use moment.js
para esto. En moment.js puedes:
var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";
ahora que tiene el formato correcto por un tiempo, analícelo si es válido:
var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
y para obtener partes de tiempo, puede hacer algo como:
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"));
Más información sobre momentjs http://momentjs.com/
moment.utc(...)
que el valor resultante esté en la misma zona UTC que el valor original.
Como ya puede haber sugerido una persona,
Pasé la cadena de fecha ISO 8601 directamente al momento como tal ...
`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`
o
`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`
cualquiera de estas soluciones le dará el mismo resultado.
`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`
Utilice DateTimeFormatter en ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
lugar deDateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
o cualquier patrón
Esto solucionó mi problema a continuación
java.time.format.DateTimeParseException: el texto '2019-12-18T19: 00: 00.000Z' no se pudo analizar en el índice 10