Skip to content

Instantly share code, notes, and snippets.

@gledos
Last active December 6, 2023 08:06
Show Gist options
  • Select an option

  • Save gledos/fd23fd52629e90dae161a6d31583f929 to your computer and use it in GitHub Desktop.

Select an option

Save gledos/fd23fd52629e90dae161a6d31583f929 to your computer and use it in GitHub Desktop.
X(Twitter)时间格式转换
// ==UserScript==
// @name X(Twitter)时间格式转换(本地时区计算,带时区信息)
// @name:zh-CN X(Twitter)时间格式转换(本地时区计算,带时区信息)
// @name:en X (Twitter) time format converter (local timezone calculation with timezone info)
// @namespace https://gist.github.com/gledos/fd23fd52629e90dae161a6d31583f929
// @version 0.1.0
// @description 将时间文本格式转换成指定格式,使用本地时区计算,并显示时区信息
// @author ChatGPT
// @match *://twitter.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function convertTimeText(element) {
var originalTime = element.getAttribute('datetime');
if (originalTime) {
var dateObj = new Date(originalTime);
var formattedTime = formatTime(dateObj);
element.textContent = formattedTime;
}
}
function formatTime(dateObj) {
// 获取本地时区偏移
var localTimeZoneOffset = new Date().getTimezoneOffset();
console.log('本地时区偏移:', localTimeZoneOffset);
// 计算本地时区的时间
var localTime = new Date(dateObj.getTime() - localTimeZoneOffset * 60000);
// 获取时区偏移的小时数
var timeZoneOffsetHours = localTimeZoneOffset / 60;
console.log('时区偏移小时数:', timeZoneOffsetHours);
// 格式化时区信息
var timeZoneInfo = 'UTC' + (timeZoneOffsetHours >= 0 ? '+' : '+') + Math.abs(timeZoneOffsetHours);
console.log('时区信息:', timeZoneInfo);
// 生成带时区信息的字符串
var formattedTime = localTime.toISOString().replace('T', ' ').slice(0, 16) + ' ' + timeZoneInfo;
console.log('格式化后的时间:', formattedTime);
return formattedTime;
}
function handleMutation(mutationsList) {
mutationsList.forEach(function(mutation) {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach(function(node) {
if (node.nodeType === 1) { // 仅处理元素节点
var timeElements = node.querySelectorAll('time');
timeElements.forEach(convertTimeText);
}
});
}
});
}
// 初始转换
document.querySelectorAll('time').forEach(convertTimeText);
// 在页面加载完毕后执行转换函数
window.addEventListener('load', function() {
// 如果页面使用了 AJAX 或其他动态加载内容,可以通过 MutationObserver 监听 DOM 变化并实时进行转换
var observer = new MutationObserver(handleMutation);
observer.observe(document.body, { childList: true, subtree: true });
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment