Last active
December 6, 2023 08:06
-
-
Save gledos/fd23fd52629e90dae161a6d31583f929 to your computer and use it in GitHub Desktop.
X(Twitter)时间格式转换
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==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