iT邦幫忙

0

[已解決]javascript 計算時數問題

不好意思,程式新手發問
我在計算外出時數碰到個問題,
舉例,用戶需要填外出時間15:40 至 17:10 回來,兩個時間是不同欄位
語法要如何寫,才能讓這兩個時間相減變成1.5小時,謝謝
爬文都是教日期相減...

感謝大家,我計算出來了!謝謝

看更多先前的討論...收起先前的討論...
在開始寫之前
先請教一下下列情形,你的預期答案為何
15:37 至 17:10
15:38 至 17:10
15:39 至 17:10
vicentli iT邦新手 4 級 ‧ 2017-10-31 22:30:24 檢舉
你問到重點,哈哈!我是要設計EasyFlow,它可以設定只取到小數第一位。
所以我是打算只取一位後面四捨五入
最簡單的就是 時分 轉為實際外出分鐘數 然後 / 60 就等於 外出時數
先拆解 用 : 切割,時數 * 60 + 分鐘數 然後兩者相減 之後 在 / 60
但是如果是跨日,要注意換算規則
froce iT邦新手 1 級 ‧ 2017-11-01 11:06:57 檢舉
其實用timloo提供的才是正解。
程式中實際儲存時間都是用時間戳來存,所以轉換成微秒去相減,再轉換回來,會比用時數、分數去轉換來的容易。
然後moment.js提供了這方面的實做,建議使用。
確實 我也推timloo的方法
至少跨日的問題有解決~~
使用起來也很快~XD
省得還要在那邊換算~
vicentli iT邦新手 4 級 ‧ 2017-11-01 11:40:23 檢舉
謝謝,我研究一下moment.js
3
king742171
iT邦新手 3 級 ‧ 2017-10-31 17:04:06

傳統方法...
換算時間為分鐘..
然後相減...
相差的分鐘數轉成小時..

依您的例子..
公式如下..

((17x60+10)-(15x60+40))/60 = 1.5

至於程式面~
可以去搜尋javascript取得時與分的函式~

參考資料 http://blog.udn.com/LupinBlog/1992878

vicentli iT邦新手 4 級 ‧ 2017-11-01 11:41:03 檢舉

謝謝,我試試!

0
timloo
iT邦研究生 2 級 ‧ 2017-10-31 17:14:46

可以google js time difference hoursstackoverflow 有一個92分的例子
我照他的code練習一下,

var d1 = new Date(2017,10,31,15,40,0,0);//年,月,日,時,分,秒,微秒
var d2 = new Date(2017,10,31,17,10,0,0);
var hours = Math.abs(d1 - d2) / 36e5;

答案是 1.5

總是有意料之外的解法。

以上供參考。

0
froce
iT邦新手 1 級 ‧ 2017-10-31 20:44:11

http://momentjs.com/docs/#/displaying/difference/
換成秒再去換算也行。

題外話,python的timedelta真好用。

我要發表回答

立即登入回答