msecdisplay

Twitterのツイート時刻を常にミリ秒まで表示

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         msecdisplay
// @namespace    sakuya
// @version      1.1
// @description  Twitterのツイート時刻を常にミリ秒まで表示
// @author       @sakuya
// @match       sakuya
// @grant        none
// ==/UserScript==

(function () {
  'use strict'

  function update() {
    let elms = document.querySelectorAll("a");
    elms.forEach(function (elm) {
      let time = elm.querySelector("time");
      if (time) {
        let id = elm.href.split("/")[5];
        time.innerHTML = formatDate(getDateFromSnowFrake(id));
      }
    });
  }
  function getDateFromSnowFrake(id) {
    if (id < 10000000000) return;
    var unixTime = Math.floor(Number(id) / 4194304) + 1288834974657;
    return new Date(unixTime);
  }
  function formatDate(date) {
    return `${date.getMonth() +1}月` +
      `${date.getDate()}日 ` +
      `${date.getHours().toString().padStart(2, '0')}:` +
      `${date.getMinutes().toString().padStart(2, '0')}:` +
      `${date.getSeconds().toString().padStart(2, '0')}.` +
      `${date.getMilliseconds().toString().padStart(3, '0')} `
  }
  setInterval(update, 1000);
})()