¿Qué significa este formato T00:00:00.000Z?

4 minutos de lectura

avatar de usuario
Alí Akram

¿Puede alguien, por favor, explicar este tipo de formato en javascript?

 T00:00:00.000Z

¿Y cómo analizarlo?

  • es.wikipedia.org/wiki/ISO_8601

    – Dibujó

    09/03/2015 a las 19:10

  • T significa “hora”, y normalmente separa la fecha del componente de hora. Z significa que el valor es en términos de UTC

    – Matt Johnson-Pint

    9 de marzo de 2015 a las 19:44

  • Una fecha y hora que termina en Z también se denomina Zulu Time.

    – Stratton

    29 de julio de 2021 a las 5:06

avatar de usuario
nanndoj

es una parte de ISO-8601 representación de la fecha. Está incompleto porque una representación de fecha completa en este patrón también debería contener la fecha:

2015-03-04T00:00:00.000Z //Complete ISO-8601 date

Si intenta analizar esta fecha tal como es, 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 concatenar con cualquier fecha

new Date('2015-03-04T00:00:00.000Z'); // Valid Date

Luego puede extraer solo la parte que desea (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());

  • Cerrar: debe usar getUTCHours, getUTCMinutesy getUTCSeconds. De lo contrario, está impartiendo el comportamiento de la zona horaria local, lo que producirá diferentes resultados según la zona horaria y la fecha que elija, debido al horario de verano.

    – Matt Johnson-Pint

    9 de marzo de 2015 a las 19:43

te sugiero que uses 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 puedes 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/

  • Debería poder analizar esto directamente en el momento del constructor con una cadena de formato adecuada. (el momento asumirá la fecha actual si no es parte del valor). Además, podría considerar moment.utc(...) por lo que el valor resultante está en la misma zona UTC que el valor original.

    – Matt Johnson-Pint

    9 de marzo de 2015 a las 19:47


  • ¿Puede decirme cómo podemos volver a convertir a la versión de fecha original T00: 00: 00.000Z desde la versión de fecha formateada?

    – Cronovisor

    10 de junio de 2021 a las 10:05

  • ¿Usas este resultado que te dará el formato T00:00:00.000Z?

    – Ugur

    6 sep 2021 a las 15:11

avatar de usuario
ese_desarrollador

Como una persona ya puede haber sugerido,

pasé el ISO 8601 cadena de fecha directamente al momento así…

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

Más información sobre momentjs http://momentjs.com/

  • Sería bueno también vincular y recomendar el uso de momento.js biblioteca javascript claramente mientras explica el código anterior.

    – VKen

    5 de noviembre de 2019 a las 14:16

  • Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente reputación, podrá comentar cualquier publicación; en cambio, proporcionar respuestas que no requieran aclaración por parte del autor de la pregunta. – De la revisión

    – Phil Sintonía

    5 de noviembre de 2019 a las 14:30

  • @PhilTune tienes razón, creo que mi cerebro se movía tan rápido que técnicamente estaba respondiendo al comentario y no a la pregunta

    – ese_desarrollador

    5 de noviembre de 2019 a las 20:28

avatar de usuario
Shahid Hussain Abbasi

Utilice DateTimeFormatter ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
en vez de DateTimeFormatter.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

avatar de usuario
Sujay Kundu

Ya que alguien preguntó cómo implementarlo:

Es fácil de usar momentojs :

// install using yarn
yarn add moment
// or install using npm 
npm i moment 

entonces puede hacer esto para extraer la fecha de acuerdo con el formato que desee:

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

¿Ha sido útil esta solución?