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]'');