これは、ごくわずかなJavascriptで実現できます。
「作成済み」時間がdd MMM yyyy hh:mm:ss
の形式でテーブルに動的にレンダリングされると仮定します。 、このようなものでうまくいくはずです:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
ElapsedTimeLogger = function(dateElementId, elapsedElementId, interval) {
var container = $(elapsedElementId);
var time = parseDate($(dateElementId).text());
var interval = interval;
var timer;
function parseDate(dateString) {
var date = new Date(dateString);
return date.getTime();
}
function update() {
var systemTime = new Date().getTime();
elapsedTime = systemTime - time;
container.html(prettyPrintTime(Math.floor(elapsedTime / 1000)));
}
function prettyPrintTime(numSeconds) {
var hours = Math.floor(numSeconds / 3600);
var minutes = Math.floor((numSeconds - (hours * 3600)) / 60);
var seconds = numSeconds - (hours * 3600) - (minutes * 60);
if (hours < 10) hours = "0" + hours;
if (minutes < 10) minutes = "0" + minutes;
if (seconds < 10) seconds = "0" + seconds;
var time = hours + ":" + minutes + ":" + seconds;
return time;
}
this.start = function() {
timer = setInterval(function() {update()}, interval * 1000);
}
this.stop = function() {
clearTimeout(timer);
}
}
$(document).ready(function () {
var timeLogger = new ElapsedTimeLogger("#date", "#elapsed", 2);
timeLogger.start();
$("#stop_timer").click(function() {
timeLogger.stop();
});
$("#start_timer").click(function() {
timeLogger.start();
});
});
</script>
</head>
<body>
<table border="1">
<tr><th>Created</th><th>Timer</th></tr>
<tr><td id="date">21 Feb 2013 12:30:00</td><td id="elapsed"></td></tr>
</table>
<input id="stop_timer" type="button" value="Stop timer"></input>
<input id="start_timer" type="button" value="Start timer"></input>
</body>
</html>
上記のコードをファイルにコピーします。たとえば、index.html
、ブラウザで開きます。 Chromeでテストしました。
2秒ごとに経過時間を更新する必要がありますが、更新間隔を自分に合ったものに変更できます。 5分ごとに更新するには:
new ElapsedTimeLogger("#date", "#elapsed", 300);
一般的な概念は、レンダリングされた「作成済み」の日付をエポックタイムスタンプ(ミリ秒単位)に解析し、現在のシステム時刻との差を計算することです。動的に更新される経過時間を取得するには、JavascriptのsetInterval
を使用します 働き。経過時間の更新を停止するには、JavascriptのclearTimeout
を使用します 機能。
prettyPrintTime
を解除しました powtac
の関数 。