Del servidor obtengo una variable de fecha y hora en este formato: 6/29/2011 4:52:48 PM
y está en hora UTC. Quiero convertirlo al tiempo de navegación del usuario actual usando JavaScript.
¿Cómo se puede hacer esto usando JavaScript o jQuery?
Del servidor obtengo una variable de fecha y hora en este formato: 6/29/2011 4:52:48 PM
y está en hora UTC. Quiero convertirlo al tiempo de navegación del usuario actual usando JavaScript.
¿Cómo se puede hacer esto usando JavaScript o jQuery?
Respuestas:
Agregue 'UTC' a la cadena antes de convertirla a una fecha en javascript:
fuente
!
Tenga cuidado!
_ ... el análisis de cadenas de fecha con el constructor Date (y Date.parse, son equivalentes) no se recomienda debido a las diferencias e inconsistencias del navegador ... (lo que probablemente fue aún más cierto en 2011)En mi punto de vista, los servidores siempre deben, en el caso general, devolver una fecha y hora en el formato estandarizado ISO 8601 .
Más información aquí:
En este caso, el servidor volvería,
'2011-06-29T16:52:48.000Z'
lo que alimentaría directamente al objeto JS Date.El
localDate
estará en la hora local correcta que en mi caso serían dos horas más tarde (tiempo DK).Usted realmente no tiene que hacer todo esto complica el análisis que acaba de cosas, siempre y cuando sean compatibles con el formato de lo que puede esperar del servidor.
fuente
DateTime
objeto con el.toString("o")
que devuelve una cadena con formato ISO-8601 como se muestra arriba. msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx En javascript esnew Date().toISOString()
. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Esta es una solución universal:
Uso:
Mostrar la fecha en función de la configuración local del cliente:
fuente
Debe obtener el desplazamiento (UTC) (en minutos) del cliente:
Y luego, haga la suma o resta correspondiente al tiempo que obtiene del servidor.
Espero que esto ayude.
fuente
Para mí las soluciones anteriores no funcionaron.
Con IE, la conversión de fecha y hora UTC a local es un poco complicada. Para mí, la fecha y hora de la API web es
'2018-02-15T05:37:26.007'
y quería convertir según la zona horaria local, así que utilicé el siguiente código en JavaScript.fuente
Pon esta función en tu cabeza:
Luego, genere lo siguiente para cada fecha en el cuerpo de su página:
Para eliminar el GMT y la zona horaria, cambie la siguiente línea:
fuente
Esto funciona para mi:
fuente
Después de probar algunos otros publicados aquí sin buenos resultados, esto pareció funcionar para mí:
Y esto funciona al revés, desde la fecha local hasta la UTC:
fuente
new Date(+date + date.getTimezoneOffset() * 6e4)
. ;-)Agregue la zona horaria al final, en este caso 'UTC':
después de eso, use las familias de funciones toLocale () * para mostrar la fecha en la ubicación correcta
fuente
A la respuesta de Matt le falta el hecho de que el horario de verano podría ser diferente entre Date () y la fecha y hora que necesita convertir; aquí está mi solución:
Y los resultados en el depurador:
fuente
Use esto para UTC y conversión de hora local y viceversa.
fuente
Esta es una solución simplificada basada en la respuesta de Adorjan Princ:
Uso:
fuente
En caso de que no le importe usar
moment.js
y su tiempo esté en UTC, solo use lo siguiente:si su tiempo no está en utc pero en cualquier otro lugar conocido por usted, use lo siguiente:
si su tiempo ya está en local, use lo siguiente:
fuente
Para mí, lo más simple parecía usar
(Pensé que la primera línea podría ser suficiente, pero hay zonas horarias que están desactivadas en fracciones de horas)
fuente
new Date('date string')
, y luego agregué estas dos líneas y parece que regresa con una hora basada completamente en la marca de tiempo UTC del servidor con ajustes realizados para que coincida con la hora local del usuario. Me tiene que preocuparse acerca de las fracciones-de-una-hora husos horarios extraños también ... No estoy seguro de si se sostiene perfectamente todo el tiempo ...Una cadena de fecha JSON (serializada en C #) se parece a "2015-10-13T18: 58: 17".
En angular, (siguiendo a Hulvej) haga un
localdate
filtro:Luego, muestre la hora local como:
fuente
Usando el
YYYY-MM-DD hh:mm:ss
formato:Para convertir del
YYYY-MM-DD hh:mm:ss
formato, asegúrese de que su fecha siga el formato ISO 8601 .Cosas importantes a tener en cuenta
T
, un espacio no funcionará en algunos navegadores+hh:mm
, el uso de una cadena para una zona horaria (por ejemplo: 'UTC') no funcionará en muchos navegadores.+hh:mm
representa el desplazamiento de la zona horaria UTC.fuente
@Adorojan's
La respuesta es casi correcta. Pero la adición de compensación no es correcta ya que el valor de compensación será negativo si la fecha del navegador es anterior a GMT y viceversa. A continuación se muestra la solución con la que vine y está funcionando perfectamente bien para mí:fuente
Para mi esto funciona bien
fuente
Respondo esto si alguien desea una función que muestre la hora convertida a un elemento de identificación específico y aplique la cadena de formato de fecha aaaa-mm-dd aquí date1 es una cadena y ids es la identificación del elemento que se mostrará esa hora.
Sé que la respuesta ya ha sido aceptada, pero llegué aquí por Google y resolví inspirarme en la respuesta aceptada, así que solo quería compartirla si alguien lo necesita.
fuente
Basado en la respuesta @digitalbath, aquí hay una pequeña función para tomar la marca de tiempo UTC y mostrar la hora local en un elemento DOM dado (usando jQuery para esta última parte):
https://jsfiddle.net/moriz/6ktb4sv8/1/
fuente
Escribí un pequeño script agradable que toma una época UTC y lo convierte en la zona horaria del sistema cliente y lo devuelve en formato d / m / YH: i: s (como la función de fecha PHP):
fuente
Puede usar momentjs ,
moment(date).format()
siempre dará resultado en la fecha local .Bonificación , puede formatear de la forma que desee. Por ej.
Para más detalles, puede consultar el sitio web de Moment js
fuente
Puede hacerlo usando el archivo moment.js .
Es simple, solo has mencionado el lugar de la zona horaria.
Ejemplo: si convierte su fecha y hora a la zona horaria de Asia / Calcuta, solo tiene que mencionar el nombre del lugar de la zona horaria obtenido de moment.js
fuente
He creado una función que convierte todas las zonas horarias en hora local.
No utilicé getTimezoneOffset (), porque no devuelve el valor de compensación adecuado
Requisitos:
fuente
En mi caso, tuve que encontrar la diferencia de fechas en segundos. La fecha era una cadena de fecha UTC, por lo que la convertí en un objeto de fecha local. Esto es lo que hice:
fuente
Para otros que visiten, use esta función para obtener un objeto de fecha local de una cadena UTC, debe ocuparse del horario de verano y funcionará en IE, iPhone, etc.
Dividimos la cadena (dado que el análisis de fechas JS no es compatible con algunos navegadores) Obtenemos la diferencia de UTC y la restamos de la hora UTC, lo que nos da la hora local. Dado que el desplazamiento devuelto se calcula con DST (corrígeme si estoy equivocado), por lo que volverá a establecer ese tiempo en la variable "utc". Finalmente devuelve el objeto de fecha.
fuente
En Angular utilicé la respuesta de Ben de esta manera:
Editar: Angular 1.3.0 agregó soporte UTC al filtro de fecha, aún no lo he usado, pero debería ser más fácil, aquí está el formato:
Angular 1.4.3 Fecha API
fuente