JavaScriptで時間を四捨五入する方法は?
2023-10-18 07:25:07
質問
例えば
Given time: 08:22 => Rounded to: 08:15
Given time: 08:23 => Rounded to: 08:30
かなり単純なはずです。しかし、私が作ることができたのは、問題を解決するための長くてあまり良くないコードだけです。頭が真っ白になりました。
掲示板
どのように解決するのですか?
変数に時間と分が入っているとします(入っていない場合は
Date
インスタンスから取得できます。
Date
インスタンス
機能
):
var m = (parseInt((minutes + 7.5)/15) * 15) % 60;
var h = minutes > 52 ? (hours === 23 ? 0 : ++hours) : hours;
分単位で計算することもできます。
Math.round()
:
var m = (Math.round(minutes/15) * 15) % 60;
または、関数を使わない、よりjavascriptに洗練された表現で行います。
var m = (((minutes + 7.5)/15 | 0) * 15) % 60;
var h = ((((minutes/105) + .5) | 0) + hours) % 24;
jsPerfのテストで確認できるのは
Math.round()
は3つのうち最も遅く、最後のものは関数呼び出しのない単なる式であるため最も速いことがわかります(関数呼び出しのオーバーヘッド、つまりスタック操作がない。ただし、ネイティブ関数はJavascript VMでは異なる扱いになるかもしれません)。
//----
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
javascript で Date() を 5 分単位で丸める。