查看 github 中的“真实”提交日期/时间(小时/天)

问题描述 投票:0回答:10

有没有办法以天/小时的精度查看 github 中的提交日期?较早的提交以“人类可读”的格式显示,例如“2 年前”,而不是显示实际日期。

old github commit

如果无法在 github 上看到实际日期,是否有比

git clone
更简单的解决方法?

git date github commit
10个回答
399
投票

将鼠标悬停在

2 years ago
上,您将获得时间戳。


13
投票

当我将鼠标悬停在“2 年前”时,真实的日期不会出现,尽管文本被

<time>
元素包裹,其
datetime
属性下有一个 iso 值。

如果其他方法都失败了,就像我所做的那样,请尝试检查文本。

示例元素:

<time datetime="2015-01-22T20:48:13Z" is="relative-time" title="Jan 22, 2015, 2:48 PM CST">7 days ago</time>


8
投票

你可以使用这个js书签:

javascript:(function() { 
        var relativeTimeElements = window.document.querySelectorAll("relative time");
        relativeTimeElements.forEach(function(timeElement){
        timeElement.innerHTML = timeElement.innerHTML +" -- "+ timeElement.title;
        })
    }()
)

https://gist.github.com/PhilippGrulich/7051832b344d4cbd30fbfd68524baa38

它仅添加正确的时间: 像这样: 提交于 21 小时前 -- 2017 年 2 月 15 日 15:49 MEZ


4
投票

我在 Chrome 上尝试了 @odony 的 TamperMonkey/Greasemonkey 脚本,但无法让它工作。

detachCallback()
未被识别。因此,我没有分离任何回调,而是简单地替换了
<relative-time>
节点。

// ==UserScript==
// @name         Github: always show absolute times
// @match        https://github.com/*
// ==/UserScript==

(function() {
    document.querySelectorAll("relative-time").forEach(function(el) {
        var parent = el.parentNode;
        var timestamp = el.title;
        var span = document.createElement("span");
        span.innerHTML = timestamp;
        parent.removeChild(el);
        parent.appendChild(span);
    });
})();

抱歉,我没有用其他浏览器测试过这个,但由于这是基本的 javascript,它应该可以工作。 :)


3
投票

如果您正在寻找一种无需悬停即可永久显示日期/时间的方法(例如用于屏幕截图),则上述基于 Javascript 的解决方案与最新的 Github HTML 不匹配(请参阅评论)。而且他们没有考虑到时间戳是基于计时器自动更新的事实(“X分钟前”必须每分钟更改),因此它们会定期重新出现。

截至 2020 年 1 月 27 日,以下脚本似乎可以在 Github 上运行:

(function() {
    var els = window.document.querySelectorAll("time-ago,relative-time");
    els.forEach(function(el) {
        el.innerHTML = "on " + el.getFormattedTitle(); // original timestamp
        el.disconnectedCallback(); // stop auto-updates
    });
})();

您可以通过在代码前添加 javascript: 使其成为

bookmarklet
,就像其他基于 JS 的解决方案一样。

如果您想使其成为永久修复,您可以将其另存为 TamperMonkey/Greasemonkey 脚本,如下所示:

// ==UserScript==
// @name         Github: always show absolute times
// @match        https://github.com/*
// ==/UserScript==

(function() {
    setTimeout(function() {
        var els = window.document.querySelectorAll("time-ago,relative-time");
        els.forEach(function(el) {
            el.innerHTML += ' <span class="text-small">(' + el.title + ')</span>'; // set original timestamp
            el.disconnectedCallback(); // stop auto-updates
        });
    }, 100); // YMMV, experiment with the timeout
})();

这不是很漂亮,但似乎可以完成工作。


3
投票

使用用户样式表插件(我在 Chrome 中使用 stylebot)

time {
  font-size: 0;
}
time:after {
    content: attr(data-original-title);
    font-size: 14px;
}

2
投票

2021 年更新:小书签仍然是 GitHub 上的唯一选项。
例如,请参阅 Justin Noel 的“在 GitHub 中显示真实提交时间

javascript:(function() {    
  var style = document.createElement('style');
  document.head.appendChild(style);
  var sheet = style.sheet;
  sheet.addRule('time-ago:before,relative-time:before', 'content: attr(title);display: block;font-size: 0.5rem;');  
})()


这与 GitLab 14.1(2021 年 7 月)形成对比

用户设置显示绝对时间

GitLab 在很多地方显示相对时间(例如 30 分钟前)。

您现在可以更改用户个人资料首选项以显示绝对时间,例如“

May 18, 2021, 3:57 PM

绝对时间尊重您的浏览器设置,并根据您首选的区域设置格式化日期和时间,例如,英国英语而不是美国英语。

这个新的显示选项为需要工作流程(例如将 GitLab 中的操作与外部系统关联)的用户提供了更多信息,一目了然。

请参阅文档问题


0
投票

在 gitlab 10 中,我用它来将工具提示标题作为标准文本添加到元素中:

javascript:(function() { 
  var relativeTimeElements = window.document.querySelectorAll("time");
  relativeTimeElements.forEach(function(timeElement){
    timeElement.innerHTML = timeElement.innerHTML +" -- "+ timeElement.getAttribute('data-original-title');
  })
}());

0
投票

是的。 小册子是打开和关闭日期时间格式的便捷方法。这是我使用的一个:

javascript: (() => {
  let style = document.querySelector('#replace-relative-time');

  if (style) return style.remove();

  style = document.createElement('style');
  style.setAttribute('id', 'replace-relative-time');
  document.head.appendChild(style);

  style.sheet.insertRule(`
        :not([role=gridcell]) > relative-time {
            display: inline-flex;
        flex-direction: row;
            visibility: hidden;
            text-indent: -1000px;
        }
    `);

  style.sheet.insertRule(`
        :not([role=gridcell]) time-ago:after, :not([role=gridcell]) > relative-time:after {
            content: attr(title);
            display: block;
            visibility: visible;
            text-indent: 0;
        }
    `);
})();

或者,如果您希望此行为在多个选项卡中持续存在,您可以获取此代码片段并将其放入在任何指定页面上运行的 Chrome 扩展中。


-1
投票

这是给Gogs的

javascript:(function() {
     var items = Array.from(document.querySelectorAll('span,relative-time'));  items.forEach(function(item) {    item.innerText = item.getAttribute('data-content');    item.style.backgroundColor = '#eee';    item.style.padding = '5px';    item.style.color = '#333';    item.style.fontWeight = 'bold';  });})()
© www.soinside.com 2019 - 2024. All rights reserved.