Когда я использовал это, мне пришлось изменить строку
var hours = givenDate.getHours();
до
var hours = givenDate.getUTCHours();
При отладке через эту строку строка var givenDate = new Date(tagText)
заканчивается созданием объекта Date в формате UTC (если вы задаете ему дату в формате RFC1123, например, ddd, dd MMM yyyy HH:mm:ss GMT
), но при вызове getHours вы получаете часы в местном часовом поясе. Так что, если вы не позвоните getUTCHours, это не сработает.
Таким образом, полная вещь
/*
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);
См. этот другой вопрос о том, как я использовал его в сочетании с плагином timeago.