##Screenshot / Code Snippet
##About
This script converts relative timestamps to absolute timestamps, displayed in your local time zone. For times less than one hour ago, I leave the "x mins ago" relative timestamp, because I think that is more useful in such short timeframes. In all cases, the tooltip is updated to an absolute, local timezone.
###Download
###Platform
Tested on Firefox 5.0 and Chrome 12.0, on Windows 7. Requires Greasemonkey on Firefox.
###License
Do whatever you want, as long as you don't sell it or claim you wrote it. If you make any cool modifications, let me know!
###Source
It seems that userscripts.org is dying. Here is the code:
// ==UserScript==
// @name localized stackoverflow timestamps
// @namespace stackoverflow
// @description Converts relative timestamps on StackOverflow to absolute, localized timestamps. See more documentation at: http://meta.stackoverflow.com/questions/12635/
// @include http://stackoverflow.com/*
// @include http://meta.stackoverflow.com/*
// @include http://superuser.com/*
// @include http://meta.superuser.com/*
// @include http://serverfault.com/*
// @include http://meta.serverfault.com/*
// @include http://askubuntu.com/*
// @include http://meta.askubuntu.com/*
// @include http://answers.onstartups.com/*
// @include http://meta.answers.onstartups.com/*
// @include http://nothingtoinstall.com/*
// @include http://meta.nothingtoinstall.com/*
// @include http://seasonedadvice.com/*
// @include http://meta.seasonedadvice.com/*
// @include http://crossvalidated.com/*
// @include http://askdifferent.com/*
// @include http://meta.crossvalidated.com/*
// @include http://stackapps.com/*
// @include http://*.stackexchange.com/*
// @exclude http://chat.stackexchange.com/*
// @exclude http://api.*.stackexchange.com/*
// @exclude http://data.stackexchange.com/*
// @exclude http://area51.stackexchange.com/*
// ==/UserScript==
(function() {
function with_jquery(f) {
var script = document.createElement("script");
script.type = "text/javascript";
script.textContent = "(" + f.toString() + ")(jQuery)";
document.body.appendChild(script);
};
with_jquery(function($) {
//NOTE: Could be more efficient. Need Jeff to fix this bug first:
// http://meta.stackoverflow.com/questions/12640/
$("span.relativetime").each(updateTS);
$("span.comment-date>span").each(updateTS);
//pads number with leading 0 if needed
function padNum(num) { return num < 10 ? "0"+num : num; }
function updateTS() {
var utcTimestamp = $(this).attr("title");
var matches = utcTimestamp.match(/^([\d]{4})-([\d]{2})-([\d]{2}) ([\d]{2}):([\d]{2}):([\d]{2}) ?(?:Z|UTC|GMT(?:[+\-]00:?00))$/);
if(matches == null)
return;
var date = new Date(
Date.UTC(
parseInt(matches[1], 10),
parseInt(matches[2], 10) - 1,
parseInt(matches[3], 10),
parseInt(matches[4], 10),
parseInt(matches[5], 10),
parseInt(matches[6], 10)
)
);
var newTimestamp = date.getFullYear() + "-"
+ padNum(date.getMonth() + 1) + "-"
+ padNum(date.getDate()) + " "
+ padNum(date.getHours()) + ":"
+ padNum(date.getMinutes()) + ":"
+ padNum(date.getSeconds());
$(this).attr("title", newTimestamp);
if($(this).text().search(/(?:min|sec)s? ago/) == -1)
$(this).text(newTimestamp);
};
});
})();