[パトロールの開始]をクリックすると、ボタンをクリックしてからの時間をカウントし始めるWebページがあります。これをサーバー(ASP.NET)に保存する必要があり、ページを再読み込みしたときにカウントを再開したいので、サーバーから2つの変数を取得します。最初の変数は、パトロール開始ボタンをクリックしたサーバー時間です。2番目の変数は、サーバー時間からの現地時間のオフセットであるため、時間の量は100%正確であり、現地時間のためにオフにはなりません。次のコードは機能しますが、時間はかなりずれています。現在、現地時間は19:53であり、この関数を実行すると、「18:00:00」から始まり、「18:00:01」、「18:00:02」などに上がります...現地時間の場合20:53だったので「19:00:00」になります。この関数がこれを行うのはなぜですか?これを修正するにはどうすればよいですか?
patroltimeCurrentTimeoffsetは、返されたオフセット値です(EG:-729)
patroltimeStartは、ユーザーがパトロールを開始したサーバー上の日時です(EG:2012年4月10日20:01:13)
function UpdatePatrolTime() {
var patroltimeCurrentTime = new Date();
patroltimeCurrentTime.setTime(patroltimeCurrentTime.getTime() + patroltimeCurrentTimeoffset);
var patroltimeStarted = new Date(patroltimeStart);
var CompareDateTime = new Date((patroltimeCurrentTime.getTime()-patroltimeStarted.getTime()));
currentHours = CompareDateTime.getHours();
currentMinutes = CompareDateTime.getMinutes();
currentSeconds = CompareDateTime.getSeconds();
currentHours = (currentHours < 10 ? "0" : "") + currentHours;
currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds
document.getElementById("patroltime").firstChild.nodeValue = currentTimeString;
}
そして<span>コントロール:
<span id="patroltime">00:00:00</span>