Greasy Fork is available in English.
将推特相对时间改为绝对时间格式 (YYYY-MM-DD HH:mm)
当前为
// ==UserScript==
// @name X (Twitter) 绝对时间显示
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 将推特相对时间改为绝对时间格式 (YYYY-MM-DD HH:mm)
// @author Gemini
// @match https://x.com/*
// @match https://twitter.com/*
// @grant none
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
function formatTime() {
// 查找 X 网页版中所有的 time 标签
const timeElements = document.querySelectorAll('time');
timeElements.forEach(timeEl => {
// 如果已经处理过,则跳过,避免重复逻辑消耗性能
if (timeEl.dataset.absoluteTimeReady) return;
const datetime = timeEl.getAttribute('datetime');
if (datetime) {
const date = new Date(datetime);
// 格式化时间:YYYY-MM-DD HH:mm
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const absoluteTime = `${year}-${month}-${day} ${hours}:${minutes}`;
// 针对 X 的 DOM 结构,找到 time 标签内部的 span 进行替换
const span = timeEl.querySelector('span');
if (span) {
span.textContent = absoluteTime;
} else {
timeEl.textContent = absoluteTime;
}
// 标记已处理,防止 MutationObserver 无限循环触发
timeEl.dataset.absoluteTimeReady = "true";
}
});
}
// 监听网页动态加载(滚动加载新推文)
const observer = new MutationObserver((mutations) => {
// 简单优化:只有当有新节点加入时才执行
for (let mutation of mutations) {
if (mutation.addedNodes.length > 0) {
formatTime();
break;
}
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
// 初始执行一次
formatTime();
})();