GAE ログ画面の日時を JST にする Greasemonkey スクリプト
タイトル通りですが、初めての Greasemonkey ユーザースクリプト作ってみました。
最近の Web 開発だと、ASP.NET で楽してたり携帯 Web 開発ばっかりだったもので、JavaScript なんて遥か遠い記憶しかありません。フォーマット出力どうやるの?とか parseInt("08") でなんで 0 が返ってくるの?なんていうダサい四苦八苦をしながら書いたので、お洒落な JavaScripter になれるように是非とも突っ込み下さいませ。
Google App Engine のログ画面(Logs)の日時表示が UTC-7 で(これってどこかで設定とか変更とかできたりするもんなんでしょうか?)、すげー不便だなーと思ってたので、JST に表示変換するだけのものです。本当は他の管理画面(Admin Logs とか Cron Jobs とか)でも変換できるようにしたかったんですが、とりあえず。
// ==UserScript== // @name GAE Logs Datetime JST // @namespace http://tiwtter.com/ae35 // @description GoogleAppEngine の Logs を UTC-7 から JST に変換 // @include https://appengine.google.com/logs?* // @version 0.1.1 // ==/UserScript== (function(){ function main(){ var allLogs = document.evaluate( '//li[@class="ae-log"]//h5/span', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < allLogs.snapshotLength; i++) {conv(allLogs.snapshotItem(i));} } function conv(o){ // 08-05 10:37PM 38.425 var m = o.innerHTML.match(/(\d{2})-(\d{2}) (\d{2}):(\d{2})(\w{2}) (\d{2})\.(\d+)/); if (m == null) return; var _month, _day, _hour, _minute, _ampm, _sec, _msec; _month = RegExp.$1; _day = RegExp.$2; _hour = RegExp.$3; _minute = RegExp.$4; _ampm = RegExp.$5; _sec = RegExp.$6; _msec = RegExp.$7; if (_ampm == 'PM') _hour = parseInt(_hour, 10) + 12; var s = ""; s += new Date().getFullYear(); s += "/"; s += _month; s += "/"; s += _day; s += " "; s += _hour; s += ":"; s += _minute; s += ":"; s += _sec; var d = new Date(s); // UTC-7 -> UTC+9 d.setTime(d.getTime() + 16 * 60 * 60 * 1000); o.innerHTML = fmtdate( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), _msec); } function fmtdate(year, month, day, hour, minute, sec, msec){ var s = ""; s += zeropadding(month + 1); s += "-"; s += zeropadding(day); s += " "; s += zeropadding(from24to12(hour)); s += ":"; s += zeropadding(minute); s += ampm(hour); s += " "; s += zeropadding(sec); s += "."; s += msec; return s; } function zeropadding(val){ return (parseInt(val, 10) < 10) ? "0" + val: val; } function from24to12(hour){ return (hour > 12) ? (hour - 12) : hour; } function ampm(hour){ return (hour < 12) ? "AM": "PM"; } document.body.addEventListener("DOMNodeInserted", function(event) { var elems = event.target.getElementsByTagName('span'); for (var i = 0; i < elems.length; i++) {conv(elems[i]);} }, false); main(); })();
ダウンロードはこちら
http://bitbucket.org/ae35/gaelogsdatetimejst/downloads/GAELogsDatetimeJST.user.js