validar reactivos hacer formulario crear contacto con como angularjs timezone momentjs

angularjs - reactivos - Estoy cambiando startDate y endDate para el formato ISO con la ayuda de.toISOString() pero me está dando un resultado incorrecto



hacer un formulario en angular (1)

Desea cambiar el tiempo de agregar a google calendar y convertir tiempo para san antonio, EE. UU.

Los valores se dan (proviene de algún lugar de la función):

/* eventDetail.eventTimings.startDate:"2017-04-14" eventDetail.eventTimings.startTime:"05:18:00" eventDetail.eventTimings.endDate:"2017-04-14" eventDetail.eventTimings.endTime:"17:18:00" */ var startDateTime = new moment(eventDetail.eventTimings.startDate + " " + startT, ''yyyy-mm-dd H:mm:ss'').toISOString().replace(/-|:|/./d/d/d/g, ""); // Now startDateTime= "20170120T111800Z" // But it should be startDateTime= "20170414T051800Z" var endDateTime = new moment(eventDetail.eventTimings.endDate + " " + endT, ''yyyy-mm-dd H:mm:ss'').toISOString().replace(/-|:|/./d/d/d/g, ""); // endDateTime="20170120T231800Z" // But it should be endDateTime=20170414T171800Z

Ver la instantánea:


Los tokens de formato en el momento (y la mayoría de las otras bibliotecas, plataformas, idiomas, etc.) distinguen entre mayúsculas y minúsculas.

yyyy-mm-dd H:mm:ss . Debe usar YYYY-MM-DD HH:mm:ss .

Además, no debe usar toISOString o replace aquí, sino usar la función de format de Moment.

var startDateTime = new moment( eventDetail.eventTimings.startDate + " " + startT, ''YYYY-MM-DD HH:mm:ss'') .format(''YYYYMMDD[T]HHmmss'');

También debe decidir si desea convertir entre hora local y UTC o no. En la función anterior, la entrada y la salida coinciden porque ambas están en la misma zona horaria local. No hay Z en la salida, porque la salida no está en UTC.

Si quisiera convertirlo a UTC, entonces haría esto:

var startDateTime = new moment( eventDetail.eventTimings.startDate + " " + startT, ''YYYY-MM-DD HH:mm:ss'') .utc() .format(''YYYYMMDD[T]HHmmss[Z]'');