Github remove relative date stupidness

Removes relative date stamps on Github commits, and shows actual date/time created.

当前为 2014-11-11 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Github remove relative date stupidness
  3. // @description Removes relative date stamps on Github commits, and shows actual date/time created.
  4. // @namespace http://www.wilcoxd.com
  5. // @include https://github.com*
  6. // @version 1
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. // created: WD-rpw 03-25-2013
  11.  
  12. /*
  13. if you don't like this there are two other Greasemonkey scripts that do the
  14. same thing, although in a more complicated way:
  15.  
  16. 1. http://userscripts.org/scripts/show/107649
  17. 2. http://userscripts.org/scripts/show/107649
  18.  
  19. */
  20.  
  21. (function() {
  22.  
  23. function parseDate(date) {
  24. var m = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z/.exec(date);
  25. var tzOffset = new Date(+m[1], +m[2] - 1, +m[3], +m[4], +m[5], +m[6]).getTimezoneOffset();
  26.  
  27. return new Date(+m[1], +m[2] - 1, +m[3], +m[4], +m[5] - tzOffset, +m[6]);
  28. }
  29. function format(el) {
  30. $el = $(el);
  31. $el.removeAttr("is");
  32. var time = $el.attr('title')||$el.attr("datetime");
  33. var formatted = time + " UTC";
  34. var dateObj = parseDate(formatted);
  35.  
  36. if (dateObj)
  37. formatted = dateObj.toLocaleString();
  38.  
  39. $el.html( formatted );
  40. }
  41.  
  42. function onDOMSubtreeModifiedHandler(e){
  43. var target = e.target;
  44. if(target.nodeType === 1 && /TIME/ig.test(target.nodeName)&&/ago/.test(target.innerHTML)) {
  45. format(target);
  46. }
  47. }
  48. $("time[is='relative-time']").each( function(index, el) {
  49. format(el);
  50. });
  51.  
  52. document.addEventListener('DOMSubtreeModified', onDOMSubtreeModifiedHandler, false);
  53. })();