您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
convert the time to exact time
// ==UserScript== // @name Twitter timestamp convert // @namespace mscststs // @version 0.2 // @description convert the time to exact time // @author mscststs // @match https://twitter.com/* // @require https://greasyforks.org/scripts/38220-mscststs-tools/code/MSCSTSTS-TOOLS.js?version=713767 // @grant none // ==/UserScript== (function() { 'use strict'; function formatTime(date = new Date(), fmt = 'YYYY-MM-DD HH:mm:ss') { date = typeof date === 'string' ? new Date(date) : date; date = typeof date === 'number' ? new Date(date) : date; const o = { 'M+': date.getMonth() + 1, 'D+': date.getDate(), 'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, 'H+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds(), 'q+': Math.floor((date.getMonth() + 3) / 3), S: date.getMilliseconds() }; const week = { 0: '\u65e5', 1: '\u4e00', 2: '\u4e8c', 3: '\u4e09', 4: '\u56db', 5: '\u4e94', 6: '\u516d' }; if (/(Y+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, (`${date.getFullYear()}`).substr(4 - RegExp.$1.length) ); } if (/(E+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, (RegExp.$1.length > 1 ? RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468' : '') + week[`${date.getDay()}`] ); } for (const k in o) { if (new RegExp(`(${k})`).test(fmt)) { fmt = fmt.replace( RegExp.$1, RegExp.$1.length === 1 ? o[k] : (`00${o[k]}`).substr((`${o[k]}`).length) ); } } return fmt; }; (async ()=>{ await mscststs.wait("div#react-root"); // 选择需要观察变动的节点 const targetNode = document.querySelector("div#react-root"); function setCode(){ const nodes = [...document.querySelectorAll("time[datetime]")]; nodes.forEach(node=>{ if(node.settled){ return; } node.settled = true; node.innerText = formatTime(new Date(node.dateTime)) //console.log(node.dateTime,node.innerText) }) // console.log(nodes) //console.log(">>>") } // 观察器的配置(需要观察什么变动) const config = { childList: true, subtree: true }; // 当观察到变动时执行的回调函数 const callback = function(mutationsList, observer) { setCode() }; // 创建一个观察器实例并传入回调函数 const observer = new MutationObserver(callback); // 以上述配置开始观察目标节点 observer.observe(targetNode, config); setCode() })() })();