Skip to main content
4 of 4
added 3530 characters in body
Kip
  • 1k
  • 6
  • 12

Display absolute timestamps (in local time)

##Screenshot / Code Snippet

enter image description here

##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

Install | View source

###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);
    };
    
  });
})();
Kip
  • 1k
  • 6
  • 12