C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[4]: JSでの時間取得について
(過去ログ 127 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 6 記事 (1 - 6 表示)] <<
0
>>
■75435
/ inTopicNo.1)
JSでの時間取得について
▼
■
□投稿者/ くま
(12回)-(2015/03/25(Wed) 09:36:11)
分類:[JavaScript]
2015/03/25(Wed) 09:59:58 編集(投稿者)
お世話になります。
JavaScriptで不明な箇所があるので教えてください。
val1で時間を取得します。
その後、1秒後に再度時間を取得します。
そして、時間の差をアラート表示しています。
下記の方法で行うと、なぜか
val2 - val1の値が「1001」「1002」などの値になってしまい
時間をうまく取得できません。
原因は何でしょうか。
よろしくお願いいたします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
<script type="text/javascript">
function test(){
var val1 = Date.now();
setTimeout(function(){
var val2 = Date.now();
alert(val2 - val1);
}, 1000);
}
</script>
</head>
<body>
<input type="button" value="click" onClick="test()">
</body>
</html>
引用返信
編集キー/
編集
■75437
/ inTopicNo.2)
Re[1]: JSでの時間取得について
▲
▼
■
□投稿者/ 魔界の仮面弁士
(259回)-(2015/03/25(Wed) 10:08:46)
■
No75435
(くま さん) に返信
> val2 - val1の値が「1001」「1002」などの値になってしまい
> 時間をうまく取得できません。
setInterval も試してみましたが、運良く 1000 ジャストで呼ばれる事もありましたが、
1001 や 1002 になることが多く、それどころか、スクロールしたり無関係な箇所を
クリックするなどの「余計な処理」を行っていた場合は、3000を超える値に
なることもありました。
すなわち、1000 ミリ秒ジャスト後に呼ばれる事が保証されているのではなく、
処理待ちのイベントキューに蓄えて処理する形を取っている、ということでしょう。
関連情報:
http://d.hatena.ne.jp/sandai/20100513/p1
引用返信
編集キー/
編集
■75438
/ inTopicNo.3)
Re[2]: JSでの時間取得について
▲
▼
■
□投稿者/ くま
(13回)-(2015/03/25(Wed) 10:15:15)
2015/03/25(Wed) 10:21:51 編集(投稿者)
■
No75437
(魔界の仮面弁士 さん) に返信
さっそくの回答ありがとうございます。
var val2 = Date.now();
の処理の値がうまく取得できない原因は何なのでしょうか。
Date.now()は、UTC(協定世界時)での 1970 年 1 月 1 日 00 時 00 分 00 秒 から現在までの経過ミリ秒を数値で返すみたいですが、取得に失敗してるという事でしょうか。
自分でも少し混乱しているので、変なこと聞いていたらすみません。
引用返信
編集キー/
編集
■75439
/ inTopicNo.4)
Re[3]: JSでの時間取得について
▲
▼
■
□投稿者/ Hongliang
(299回)-(2015/03/25(Wed) 10:24:38)
Date.now()に問題があるのではないです。
単に、setTimeoutなりで呼び出されるのが、指定時間ちょうどであるとは保証されないと言うだけの話です。
引用返信
編集キー/
編集
■75440
/ inTopicNo.5)
Re[3]: JSでの時間取得について
▲
▼
■
□投稿者/ 魔界の仮面弁士
(260回)-(2015/03/25(Wed) 10:45:29)
■
No75438
(くま さん) に返信
> の処理の値がうまく取得できない原因は何なのでしょうか。
なにをもってして「うまく取得できない」と判断されたのかが分かりませんが、
それは、now メソッドの返却値が、実際の時間とズレがあるということでしょうか。
だとしたら、それはどの程度のズレでしょうか?
先の確認方法だとしたら、setTimeout や setInterval の精度は、
そもそも 1ms よりは粗いので、測定方法に問題があります。
9時間(32,400,000ミリ秒)前後の差だとすれば、
それは JST と UTC の時差を意味しているので、
Date.now() ではなく、new Date() で確認した方が
分かりやすいかと思います。
引用返信
編集キー/
編集
■75442
/ inTopicNo.6)
Re[4]: JSでの時間取得について
▲
▼
■
□投稿者/ くま
(14回)-(2015/03/25(Wed) 11:19:32)
2015/03/25(Wed) 14:05:19 編集(投稿者)
■
No75440
(魔界の仮面弁士 さん) に返信
ありがとうございます。魔界さんが書かれて内容で理解できました。
混乱していて、変な質問していました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-