有没有办法以天/小时的精度查看 github 中的提交日期?较早的提交以“人类可读”的格式显示,例如“2 年前”,而不是显示实际日期。
如果无法在 github 上看到实际日期,是否有比
git clone
更简单的解决方法?
将鼠标悬停在
2 years ago
上,您将获得时间戳。
当我将鼠标悬停在“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>
你可以使用这个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
我在 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,它应该可以工作。 :)
如果您正在寻找一种无需悬停即可永久显示日期/时间的方法(例如用于屏幕截图),则上述基于 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
})();
这不是很漂亮,但似乎可以完成工作。
使用用户样式表插件(我在 Chrome 中使用 stylebot)
time {
font-size: 0;
}
time:after {
content: attr(data-original-title);
font-size: 14px;
}
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 中的操作与外部系统关联)的用户提供了更多信息,一目了然。
在 gitlab 10 中,我用它来将工具提示标题作为标准文本添加到元素中:
javascript:(function() {
var relativeTimeElements = window.document.querySelectorAll("time");
relativeTimeElements.forEach(function(timeElement){
timeElement.innerHTML = timeElement.innerHTML +" -- "+ timeElement.getAttribute('data-original-title');
})
}());
是的。 小册子是打开和关闭日期时间格式的便捷方法。这是我使用的一个:
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 扩展中。
这是给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'; });})()