zona servidor obtener manejo horaria hora gettimezoneoffset fechas fecha ejemplos actual datetime jquery-plugins

datetime - servidor - obtener zona horaria javascript



¿Hay un complemento de JQuery para convertir los tiempos de datos UTC a la zona horaria del usuario local? (5)

Si tengo una etiqueta:

<span class="utctime">2010-01-01 11:30 PM</span>

Me gustaría un script o plugin jquery para convertir cada clase de tiempo de uso a la hora local del navegador del usuario actual. Preferiría encontrar esto antes de escribir uno.


CodeGrue muchas gracias por compartir esto con la comunidad.

Para aquellos que están obligados a trabajar con otras zonas horarias distintas de UTC ... puede modificar la función agregando la diferencia horaria de esta manera:

Fragmento original:

var offset = -(currentDate.getTimezoneOffset() / 60);

Fragmento modificado para trabajar con la zona horaria CEST (Desplazamiento de zona horaria: UTC + 2 horas):

var offset = -(currentDate.getTimezoneOffset() / 60 + 2);

y así.


Cuando utilicé esto, tuve que cambiar la línea.

var hours = givenDate.getHours();

a

var hours = givenDate.getUTCHours();

Al depurar esto, la línea var givenDate = new Date(tagText) termina creando un objeto Date que está en UTC (si le da una fecha en formato RFC1123, por ejemplo ddd, dd MMM yyyy HH:mm:ss GMT ), pero cuando llama a getHours, obtiene las horas en la zona horaria local. Entonces, a menos que llames a getUTCHours, no funciona.

Así que la cosa completa es

/* Note: this requires that the JQuery-DateFormat plugin be loaded first http://plugins.jquery.com/project/jquery-dateFormat */ (function ($) { $.fn.localTimeFromUTC = function (format) { return this.each(function () { // get time offset from browser var currentDate = new Date(); var offset = -(currentDate.getTimezoneOffset() / 60); // get provided date var tagText = $(this).html(); var givenDate = new Date(tagText); // apply offset var hours = givenDate.getUTCHours(); hours += offset; givenDate.setHours(hours); // format the date var localDateString = $.format.date(givenDate, format); $(this).html(localDateString); }); }; })(jQuery);

Vea esta otra pregunta para saber cómo lo usé en combinación con el complemento timeago.


Ok, entonces creé uno que lo hace:

/* Note: this requires that the JQuery-DateFormat plugin (available here) be loaded first http://plugins.jquery.com/project/jquery-dateFormat */ (function ($) { $.fn.localTimeFromUTC = function (format) { return this.each(function () { // get time offset from browser var currentDate = new Date(); var offset = -(currentDate.getTimezoneOffset() / 60); // get provided date var tagText = $(this).html(); var givenDate = new Date(tagText); // apply offset var hours = givenDate.getHours(); hours += offset; givenDate.setHours(hours); // format the date var localDateString = $.format.date(givenDate, format); $(this).html(localDateString); }); }; })(jQuery);

Uso:

<span class="utcdate">2/5/2010 10:30 PM</span> $(''.utcdate'').localTimeFromUTC(''MM/dd/yyyy hh:mm a'');


Use la fecha de entrada para encontrar el desplazamiento de la zona horaria. Importante para los cambios de horario de verano.

(function ($) { $.fn.localTimeFromUTC = function (format) { return this.each(function () { // get provided date var tagText = $(this).html(); var givenDate = new Date(tagText); if(givenDate == ''NaN'') return; // get time offset from browser var offset = -(givenDate.getTimezoneOffset() / 60); // apply offset var hours = givenDate.getHours(); hours += offset; givenDate.setHours(hours); // format the date var localDateString = $.format.date(givenDate, format); $(this).html(localDateString); }); }; })(jQuery);

Úsalo como ...

function ConvertDatesToLocalTime() { $(''.ConvertUtcToLocal'').localTimeFromUTC(''MM/dd/yyyy hh:mm:ss a''); } $(document).ready(function () { ConvertDatesToLocalTime(); });

Asigne la clase ''ConvertUtcToLocal'' a todos los elementos que requieren conversión.


$(".localdatetime").each(function () { var datestr = $(this).text(); //alert(datestr); if (datestr.trim() != '''') { var dateOb = (new Date(Date.parse(datestr, ''MM-dd-yyyy HH:mm''))).setTimezone("GMT").toString(''dd MMM yyyy hh:mm tt''); //alert(dateOb); $(this).text(dateOb); } })

esto también se puede usar junto con la biblioteca Date.js para mostrar la hora en la zona horaria del usuario