ハマっている「お菓子」を教えて!

以下のスクリプトは時間、分まではリアルタイムで表示されるのですが、秒はリアルタイムで表示されません。
nowX をnew Date()にすると問題なく表示されるのですが、どのパソコンでも正確な日本時間を取得し、その差を表示しなければいけないため為、単にローカル時間を取得するDate()は使用できません。
直せる場所があれば是非教えて下さい。

var sYear = '2009';
var sMonth = '02';
var sDay = '24';
var sHour = '13';
var sMini = '02';
var sSecd = '41';
sMon = sMonth - 1;

function counting() {

nowtime = new Date();
jptime = new Date();
jptime.setTime(nowtime.getTime() + (nowtime.getTimezoneOffset() + 540) * 60 * 1000);
year = jptime.getYear();
minutes = jptime.getMinutes();
hour = jptime.getHours();
month = new Array("Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sep","Oct","Nov","Dec");
if(jptime.getYear() < 2000) {year += 1900;}
if(jptime.getMinutes() < 10) {minutes = "0" + minutes;}
Moxtime = (month[jptime.getMonth()]+" "+jptime.getDate()+", "+year+" "+hour+":"+minutes+":00");

setX = new Date(sYear,sMon,sDay,sHour,sMini,sSecd);
nowX = new Date(Moxtime);
zanSecond = Math.floor((setX.getTime() - nowX.getTime()) / 1000);

if (zanSecond > 0) {
value = "残り";
endValue = "です";
} else {
value = "すでに";
zanSecond = Math.abs(zanSecond);
endValue = "経過しました";
}
zanDay = Math.floor(zanSecond / 86400);
zanHour = Math.floor((zanSecond - zanDay * 86400) / 3600);
zanMini = Math.floor((zanSecond - zanDay * 86400 - zanHour * 3600) / 60);
zanSecd = Math.floor(zanSecond - zanDay * 86400 - zanHour * 3600 - zanMini * 60);

if (zanDay > 0) {
value = value+zanDay+"日";
}
if (zanHour > 0) {
value = value+zanHour+"時間";
}
if (zanMini > 0) {
value = value+zanMini+"分";
}
value = value+zanSecd+"秒";

document.test.zan.value = value+endValue;

setTimeout("counting()", 500);
}

A 回答 (2件)

・以下の行を追加


seconds = jptime.getSeconds();

・以下の行を変更
Moxtime = (month[jptime.getMonth()]+" "+jptime.getDate()+", "+year+" "+hour+":"+minutes+":"+seconds);

場所はわかりますよね。

>どのパソコンでも正確な日本時間を取得し、その差を表示しなければいけないため為

所詮、タイムゾーンを補正しているだけなので、動かすパソコンの現地時刻が
正確でないと意味が無いですよ。
    • good
    • 0

ちゃんと見てないけど…



Moxtime = (month[jptime.getMonth()]+" "+jptime.getDate()+", "+year+" "+hour+":"+minutes+":00");
nowX = new Date(Moxtime);

ってなってるので、秒が入らないんじゃないの?

はやとちりの勘違いだったら、無視してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!