Greasy Fork

KAT: smart full date/time

Today: "1 hour ago", yesterday: "yesterday, 11:44", earlier: "01 Oct 2015, 10:45 (12 days ago)"

目前为 2015-10-13 提交的版本。查看 最新版本

// ==UserScript==
// @name         KAT: smart full date/time
// @description  Today: "1 hour ago", yesterday: "yesterday, 11:44", earlier: "01 Oct 2015, 10:45 (12 days ago)"
// @include      https://kat.cr/*
// @version      1.0
// @author       wOxxOm
// @namespace    https://greasyfork.org/en/users/2159-woxxom
// @license      MIT License
// @run-at       document-start
// @grant        GM_addStyle
// @require      https://greasyfork.org/scripts/12228/code/setMutationHandler.js
// ==/UserScript==

(function(){
	GM_addStyle('.wOxxOmified {opacity:0.7}');
	
	var today = new Date();
	today.setHours(0, 0, 0, 0);
	
	var yesterday = new Date();
	yesterday.setDate(today.getDate() - 1);
	yesterday.setHours(0, 0, 0, 0);
	
	var year = new Date();
	year.setMonth(0, 1);
	year.setHours(0, 0, 0, 0);

	setMutationHandler(document, 'time', datify, 
					   {characterData: true, attributes: true, attributeFilter: ['title'], subtree: true});
	function datify(nodes) {
		nodes.forEach(function(n) {
			var d = new Date(n.getAttribute('datetime') || n.title);
			if (d >= today) {
				// no change
			} else if (d >= yesterday) {
				setContent(n, 'yesterday, ', d, {hour:'2-digit', minute:'2-digit'});
			} else if (d >= year) {
				setContent(n, '', d, {day:'numeric', month:'short', hour:'2-digit', minute:'2-digit'});
			} else {
				setContent(n, '', d, {day:'numeric', month:'short', year:'2-digit', hour:'2-digit', minute:'2-digit'});
			}
		});
		return true;
	}
	function setContent(n, prefix, d, options) {
		var time = d.toLocaleTimeString(navigator.language, options);
		var text = prefix ? prefix + time : time + ', <span class="wOxxOmified">' + n.textContent + '</span>';
		if (n.innerHTML != text)
			n.innerHTML = text;
	}
})();