今天看到 这个帖子 中提到想要显示 V2EX 的准确时间,觉得是个不错的想法,然后看了下页面源码,发现源码中并没有帖子准确时间的数据。
回复中 @px1981 提到一个虽不精确(没有时间数据无法做到绝对精确)但还算靠谱的方案。
于是写了个用户脚本,在 Mac OS X + Chrome + Tampermonkey 下测试成功。
Gist 地址
https://gist.github.com/dofy/38c8d67405a5597f4e7e
源码
// ==UserScript== // @name V2EX 绝对时间 // @namespace http://phpz.org/ // @version 0.1 // @description 显示 V2EX 中的绝对时间 // @author Seven Yu // @match *.v2ex.com/* // @grant none // ==/UserScript== /* jshint -W097 */ 'use strict'; (function(win, doc, $) { // 检测列表 var classList = [ '.header .gray', // 楼主时间 '.cell .small', // 列表时间 '.inner .small', // 最后一条 '.dock_area .fade', // 个人主页回复列表 '.cell .snow' // 系统提醒 ]; // 时间正则 /* * RegExp.exec() 返回结构说明 * 0: 匹配的时间文本 * 1: 天数 * 2: 小时数 * 3: 分钟数 */ var dateReg = /(?:(\d+)\s*天前)|(?:(?:(\d+)\s*小时\s*)?(\d+)\s*分钟前)|(?:几秒前|刚刚)/g; // 之行检查和替换 for(var ind in classList) { $(classList[ind]).each(function(index, item) { var showDate, itemContent, matchArray; item = $(item); dateReg.lastIndex = 0; itemContent = item.html(); matchArray = dateReg.exec(itemContent); showDate = realDate(matchArray); if(showDate) { //item.css('background-color', 'red'); item.html(itemContent.replace(matchArray[0], showDate)); } }); } /** * 获取绝对时间 */ function realDate(matchArray) { if(!matchArray) return false; var now = new Date(), nowHour = now.getHours(), dayNum = parseInt(matchArray[1] || 0, 10), hourNum = parseInt(matchArray[2] || 0, 10), minuteNum = parseInt(matchArray[3] || 0, 10), itemNow, resultDate, resultTime; now -= dayNum * 24 * 60 * 60 * 1000; now -= hourNum * 60 * 60 * 1000; now -= minuteNum * 60 * 1000; itemNow = new Date(now); resultDate = [itemNow.getFullYear(), itemNow.getMonth() + 1, itemNow.getDate()].join('-'); resultTime = [fixZero(itemNow.getHours()), fixZero(itemNow.getMinutes())].join(':'); if(dayNum > 0) { return resultDate; } else { if(hourNum >= nowHour) { return [resultDate, resultTime].join(' '); } else { return resultTime; } } } /** * 数字补零 */ function fixZero(num) { return num > 9 ? num : '0' + num; } })(window, document, window.jQuery);
version 0.1.2
小更新,简化了一点点代码。
version 0.1.3
处理附言部分时间
![]() | 1 px1981 2015-12-30 18:06:50 +08:00 v5 |
2 Orzpls 2015-12-30 18:42:51 +08:00 via Android 顶一下,说不定用得上呢。 |
![]() | 3 sparrowMan 2015-12-30 22:01:41 +08:00 冲着动手能力 赞一个 |
![]() | 4 dofy OP @sparrowMan 哈哈 谢谢 |
5 chywj7 2015-12-31 11:28:51 +08:00 越来越极客了 |
![]() | 6 GPU 2016-01-09 08:32:19 +08:00 请问代码是否可以引用集成进 V2EX plus 扩展? |