Absolute Time on GreasyFork

Make Absolute Time on GreasyFork

目前為 2023-07-23 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Absolute Time on GreasyFork
// @namespace   UserScript
// @match       https://gf.qytechs.cn/*
// @grant       none
// @version     1.0.2
// @license MIT
// @author      CY Fung
// @description Make Absolute Time on GreasyFork
// @unwrap
// ==/UserScript==

(() => {

  let langUsed = null;

  function pad(s, d) {
    s = `000000${s}`
    return s.substring(s.length - d)
  }

  /**
   * @callback formatDateTimeFn
   * @param {DateTime} dt
   * @returns {string} formated text for date & time
   */

  /** @type {formatDateTimeFn} */
  const formatUFn = (dt) => {
    return `${dt.getFullYear()}.${pad(dt.getMonth() + 1, 2)}.${pad(dt.getDate(), 2)} ${pad(dt.getHours(), 2)}:${pad(dt.getMinutes(), 2)}`

  }

  /** @type {formatDateTimeFn} */
  const formatFrFn = (dt) => {
    return `${pad(dt.getDate(), 2)}.${pad(dt.getMonth() + 1, 2)}.${dt.getFullYear()} ${pad(dt.getHours(), 2)}:${pad(dt.getMinutes(), 2)}`
  }

  let formatFn = formatUFn;

  let did = 0;
  let cid = setInterval(() => {

    for (const s of document.querySelectorAll("relative-time[datetime]:not(.absolute)")) {
      s.classList.add("absolute")
      s.format = 'datetime';
      did ? (cancelAnimationFrame(did), (did = 0)) : 0;
      Promise.resolve(s).then(() => {

        did ? (cancelAnimationFrame(did), (did = 0)) : 0;
        requestAnimationFrame(() => {

          did ? (cancelAnimationFrame(did), (did = 0)) : 0;

          if (langUsed === null) {
            langUsed = document.documentElement.lang;
            if (typeof langUsed === 'string' && (langUsed === 'fr' || langUsed.startsWith('fr-'))) {
              formatFn = formatFrFn;
            }
          }

          let d = s.getAttribute('datetime');
          let dt = d ? new Date(d) : null;
          if (dt && s.shadowRoot && s.shadowRoot.firstChild) {
            s.shadowRoot.firstChild.textContent = formatFn(dt);
          }
        })

      })

    }


    did = did || (document.body ? requestAnimationFrame(() => {
      cid && clearInterval(cid);
      cid = 0;
    }) : 0);


  }, 1);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址