iT邦幫忙

0

JavaScript-取得2個時間(小時跟分鐘)做相減後的結果

前言

因為需求需要將2個時間的小時跟分鐘作相減,塞進另一個欄位裡大概是長這樣

08:30 - 00:15 = 08:15

上面的08:15才是我們這次要取得的時間

JavaScript

var time = "08:30";
_startTime = time.split(":");
var startDate = new Date(0, 0, 0, _startTime[0], _startTime[1], 0);
var endDate = new Date(0, 0, 0, 0, 15, 0);
var diff = startDate.getTime() - endDate.getTime();
var hours = Math.floor(diff / 1000 / 60 / 60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff / 1000 / 60);
resultTime = hours + ":" + minutes;

_startTime = 範例上08:30我們要先將小時跟分鐘分開所以用split(":")

在startDate用new Date()取得時間

結果 Sun Dec 31 1899 08:30:00 GMT+0800 (台北標準時間)

_endDate因為我是要固定減15分鐘所以new Date()之後分鐘的位子就固定放15

結果 Sun Dec 31 1899 00:15:00 GMT+0800 (台北標準時間)

將兩個時間轉成年月日時分秒後在使用getTime()方法轉成毫秒數,才能將兩個數字作相減

diff startDate endDate
29700000 -2209073400000 -2209103100000

接著用Math.floor()方法包住取回小時最大整數

Math.floor(29700000 / 1000 / 60 / 60 = 8.25) = 8

那轉換回分鐘比較麻煩要先將轉換出來的小時乘回毫秒數

(29700000 -= 8 * 1000 * 60 * 60) = -900000

一樣用Math.floor()包住

Math.floor(-900000 / 1000 / 60) = 15

再將轉換的數字作組合就是我們最後要得到的時間/images/emoticon/emoticon34.gif

resultTime hours ":" minutes
08:15 08 ":" 15

1 則留言

2
Homura
iT邦高手 1 級 ‧ 2018-09-27 17:41:57

你只是要相減時間嗎?
這算法也太累@@
這樣就好...

var date = new Date();
date.setMinutes(date.getMinutes()-15);
console.log(`realTime = ${date.getHours()}:${date.getMinutes()}`)

感謝大大的提醒!!!!!!/images/emoticon/emoticon02.gif
讓我可以更簡化程式碼!! 感謝~/images/emoticon/emoticon12.gif

我要留言

立即登入留言