Als ich das gebraucht, I
var hours = givenDate.getHours();
zu
var hours = givenDate.getUTCHours();
die Linie ändern musste Wenn durch diese debuggen, die Linie var givenDate = new Date(tagText)
endet ein Date-Objekt erstellen, die in UTC (wenn Sie geben ein Datum im RFC1123-Format, zB ddd, dd MMM yyyy HH:mm:ss GMT
), aber wenn Sie getHours aufrufen, erhalten Sie die Stunden in der lokalen Zeitzone. Wenn Sie also getUTCHours nicht aufrufen, funktioniert es nicht.
So ist die vollständige Sache ist
/*
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);
Siehe this other question, wie habe ich es in Kombination mit dem timeago Plugin.
ich mit Ihrem Code und jQuery ein paar Dinge ändern musste angezeigt werden soll. Sie können die vollständigen Details auf meinem Blog sehen: [http://emplementation.blogspot.com/2010/11/displaying-timestamps-in-clientsviewers.html](http://emplementation.blogspot.com/2010/11/ displaying-timestamps-in-clientsview.html – docchang
Zeitzonen sind nicht immer auf einer Stunde begrenzt, daher sollten Sie den Offset auf Minuten und nicht auf Stunden anwenden.Zum Beispiel, [Venezuela ist UTC-04: 30] (https://en.wikipedia.org/wiki/UTC%E2%88%9204:30) – jwadsack