zona variable objeto mdn manejo horaria gettimezoneoffset fechas fecha ejemplos detectar actual javascript date timezone momentjs

javascript - variable - ¿Cómo convertir la fecha de Moment.js a la zona horaria local de los usuarios?



typescript fecha actual (4)

Esto es lo que hice:

var timestamp = moment.unix({{ time }}); var utcOffset = moment().utcOffset(); var local_time = timestamp.add(utcOffset, "minutes"); var dateString = local_time.fromNow();

Donde {{ time }} es la marca de tiempo utc.

Uso los marcos Moment.js y Moment-Timezone, y tengo un objeto de fecha Moment.js que está explícitamente en la zona horaria UTC. ¿Cómo puedo convertir eso a la zona horaria actual del navegador?

var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC"); var localDate = ???

Por lo tanto, estaría bien si pudiera averiguar la zona horaria local de los usuarios; o, alternativamente, me gustaría convertir el objeto de fecha en otro objeto de datos que simplemente use la "zona horaria local", sin importar cuál sea realmente.


No necesita usar zona horaria para esto. La biblioteca principal moment.js tiene una funcionalidad completa para trabajar con UTC y la zona horaria local.

var testDateUtc = moment.utc("2015-01-30 10:00:00"); var localDate = moment(testDateUtc).local();

Desde allí puede usar cualquiera de las funciones que puede esperar:

var s = localDate.format("YYYY-MM-DD HH:mm:ss"); var d = localDate.toDate(); // etc...

Tenga en cuenta que al pasar testDateUtc , que es un objeto de moment , de vuelta al constructor moment() , crea un clon . De lo contrario, cuando llamó a .local() , también cambiaría el valor testDateUtc , en lugar de solo el valor localDate . Los momentos son mutables .

También tenga en cuenta que si su entrada original contiene un desplazamiento de zona horaria como +00:00 o Z , puede analizarlo directamente con el moment . No necesita usar .utc o .local . Por ejemplo:

var localDate = moment("2015-01-30T10:00:00Z");


Use la función utcOffset.

var testDateUtc = moment.utc("2015-01-30 10:00:00"); var localDate = moment(testDateUtc).utcOffset(10 * 60); //set timezone offset in minutes console.log(localDate.format()); //2015-01-30T20:00:00+10:00


var dateFormat = ''YYYY-DD-MM HH:mm:ss''; var testDateUtc = moment.utc(''2015-01-30 10:00:00''); var localDate = testDateUtc.local(); console.log(localDate.format(dateFormat)); // 2015-30-01 02:00:00

  1. Defina su formato de fecha.
  2. Cree un objeto de momento y establezca el indicador UTC en verdadero en el objeto.
  3. Cree un objeto de momento localizado convertido del objeto de momento original.
  4. Devuelve una cadena con formato del objeto de momento localizado.

Ver: http://momentjs.com/docs/#/manipulating/local/