プロが教えるわが家の防犯対策術!

下記サイトに記載のJavascriptを使用して、時差を表示したいと考えていますが、分単位の時差に対応していないようです。

http://www.pori2.net/js/date/4.html

10時間などの時間単位の変更は出来るのですが、9.5時間の時差などの場合には、表示が9時間となってしまいます。
そのため、分単位の時差に改良したいのですが、どのようにすれば良いかを教えてください。

A 回答 (3件)

時差に小数点ってあるんですか?

この回答への補足

あるんです。

オーストラリアやニュージーランド他、15分~30分単位で異なる場所があります。

補足日時:2012/02/24 18:26
    • good
    • 0

> 時差に小数点ってあるんですか?



http://ja.wikipedia.org/wiki/標準時


> 9.5時間の時差などの場合には、表示が9時間となってしまいます。

どのようなコードでそうなったのでしょう?
私の環境では,次のコードで「-9.5時間」と表示されます。

var Jisa = -570;
document.write("標準時との時差は、"+Jisa/60+"時間です!");

この回答への補足

説明不足でした。

HTML側表記
________________________
<body onload="SekaiTokei()">
<form name="Wclock">
<select name="city">
<option value="9">東京・ソウル</option>
</select>
<br>
<input type="text" name="Time" value="" size="30">
</form>
________________________

option value="9" でGMT+9時間の時差を表示できます。

このoption valueを” option value="9.5"”としても9時間としか表示されない状態です。

JavaScript内でダイレクトに時差の変更ではなく、HTML側で変更する方法が知りたいです。
修正が必要なJavaScriptは下記となります。
_________________________________________________

<script type="text/javascript">
<!--

function SekaiTokei()
{
setInterval("TimeSet()",1000);
}

function TimeSet()
{

//optionタグのvalue値に設定した時差を取得する
var num = document.Wclock.city.selectedIndex;
var Jisa = parseInt(document.Wclock.city.options[num].value);

//アクセスしたPCの日付データを求め数値にする
var Here= (new Date()).getTime();

//グリニッジ標準時を求める
var GMT = Here + (new Date()).getTimezoneOffset()*60*1000;

//時差を加減して、日付データに戻す
var Jikan=new Date(GMT+Jisa*60*60*1000);

//日付と時刻を求める
var Year = Jikan.getFullYear();
var Month= Jikan.getMonth()+1;
var Day = Jikan.getDate();
var Hour = Jikan.getHours();
var Minu = Jikan.getMinutes();
var Sec = Jikan.getSeconds();

//時間表示の修正(10秒未満は前に0を付ける)
if (Hour < 10) Hour="0"+Hour;
if (Minu < 10) Minu="0"+Minu;
if (Sec < 10) Sec ="0"+Sec;

//日付と時刻を表示する
var DATE = Year+"年"+Month+"月"+Day+"日";
var TIME = Hour+":"+Minu+":"+Sec;
document.Wclock.Time.value = DATE+" "+TIME;

}
// -->
</script>

補足日時:2012/02/24 18:23
    • good
    • 0

>時差を表示したいと考えていますが、分単位の時差に対応していないようです。


「対応していない」と言うほどでもないでしょう。
時間に変換する時に、parseInt( )で行なっているので、変な少数や文字は切り捨て扱いになっているだけです。
Number()やparseFloat()にすれば少数でも認識します。

まぁ、そうは言っても少数での時間ってわかりにくいので、分単位で指定してあげるようにした方がわかりやすいように思います。
その場合は、60倍しなければいいだけということになります。
    • good
    • 0
この回答へのお礼

parseFloat()で問題解決です。

有難うございました。

お礼日時:2012/02/24 19:25

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