您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows the duration of each event.
// ==UserScript== // @name Google Calendar Time Box Duration // @namespace https://github.com/Row // @description Shows the duration of each event. // @include https://www.google.com/calendar* // @version 0.0.1.20141019134026 // ==/UserScript== var timer; document.querySelector('#gridcontainer').addEventListener("DOMSubtreeModified", function(e) { window.clearTimeout(timer); timer = window.setTimeout(addDuration,500); }, false); function addDuration() { var timeElements = document.querySelectorAll('dl.cbrd dt'); for (var i in timeElements) { var str = timeElements[i].innerHTML || ''; str = str.replace(/^(\d{2}:\d{2}) – (\d{2}:\d{2}) (.*?)$/, callbackTimeISO); str = str.replace(/^(\d+)(\:?\d*?)(p?) – (\d+)(\:?\d*?)(p?) (.*?)$/, callbackTimeGoogleAMPM); timeElements[i].innerHTML = str; window.clearTimeout(timer); } } function AMPMto24(hour, isPM) { hour = isPM && hour != '12' ? parseInt(hour) + 12 : hour; return pad(!isPM ? parseInt(hour) % 12 : hour, 2); } function callbackTimeGoogleAMPM(match, startHour, startMinute, startP, endHour, endMinute, endP, extra) { var start = AMPMto24(startHour, startP == 'p'); start += startMinute != '' ? startMinute : ':00'; var end = AMPMto24(endHour, endP == 'p'); end += endMinute != '' ? endMinute : ':00'; return startHour + startMinute + startP + ' - ' + endHour + endMinute + endP + ' (' + calculateDuration(start, end) + ') ' + extra; } function callbackTimeISO(match, start, end, extra) { return start + ' - ' + end + ' (' + calculateDuration(start, end) + ') ' + extra; } function getTimeDifference(startDate,endDate) { var totalDifference = endDate.getTime() - startDate.getTime(); var diff = new Object(); diff.days = Math.floor(totalDifference/1000/60/60/24); totalDifference -= diff.days*1000*60*60*24; diff.hours = Math.floor(totalDifference/1000/60/60); totalDifference -= diff.hours*1000*60*60; diff.minutes = Math.floor(totalDifference/1000/60); totalDifference -= diff.minutes*1000*60; diff.seconds = Math.floor(totalDifference/1000); return diff; } function pad(number, length) { var str = '' + number; while (str.length < length) str = '0' + str; return str; } function calculateDuration(startTime,endTime) { var dateString = "2011-11-11T"; var s = new Date(dateString+startTime); var e = new Date(dateString+endTime); var diff = getTimeDifference(s,e); return pad(diff.hours,2) + ":" + pad(diff.minutes,2); }