[英]using moment.js to display duration in format 00:XX when duration is less than an hour
我正在嘗試使用時刻持續時間格式來設置倒計時器的格式,但是一旦時間低於60分鍾,則小時消失,例如60分鍾顯示為“01:00”,這是正確的59分鍾顯示為“59”,這是不正確的,它應顯示為“00:59”
其中3500000毫秒等於58分鍾
我有以下代碼:
moment.duration(3500000).format("hh:mm", { forceLength: true })
顯示結果:58,而不是00:58
我在這做錯了什么?
我也嘗試過這種變化無濟於事
moment.duration(3500000).format("HH:mm", { forceLength: true })
我可以解釋發生了什么(我創建了moment-duration-format
插件)。
forceLength
選項僅影響具有值的第一個標記,這意味着第一個標記的值大於0
。 在您的情況下, hh
標記沒有值。 https://github.com/jsmreese/moment-duration-format#force-length
從hh
切換到HH
意味着用於格式化時刻對象(日期),但不是用於使用我的插件格式化時刻持續時間對象(時間長度)(除非您已經自定義了持續時間格式化令牌,這可以使用我的插件)。
使用moment(moment.duration(3500000)._data).format("HH:mm");
建議是一個很好的創意解決方法。
如果你想獲取存儲庫的dev
分支上的moment-duration-format版本,有一個選項可以提供幫助(參見https://github.com/jsmreese/moment-duration-format/issues/22 )。 ..
在該版本中,您可以使用*
字符表示修剪時顯示的最小標記,即使它沒有值:
moment.duration(3510000).format("*hh:mm");
--> "00:59"
moment.duration(3509999).format("*hh:mm");
--> "00:58"
請注意, dev
分支版本中的默認行為從truncate
更改為round
因此當您從58 minutes 30 seconds
傳遞到58 minutes 29 seconds
,您將從00:59
下降到00:58
。 在該版本中,您可以為此輸出啟用trunc
選項:
moment.duration(3539999).format("*hh:mm", { trunc: true });
--> "00:58"
moment.duration(3540000).format("*hh:mm", { trunc: true });
--> "00:59"
不確定這是否是你想要的倒計時解決方案...也許在剩余部分上設置floor
( trunc
), ceiling
或round
功能最好?
如果你想要一個天花板行為,你可以使用dev
分支版本以及trunc
並將60000
添加到你的計時器值:
moment.duration(3540000 + 60000).format("*hh:mm", { trunc: true });
--> "01:00"
moment.duration(3539999 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3500000 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3480000 + 60000).format("*hh:mm", { trunc: true });
--> "00:59"
moment.duration(3479999 + 60000).format("*hh:mm", { trunc: true });
--> "00:58"
嘗試這個
moment(moment.duration(3500000)._data).format("HH:mm");
試試'trim'參數。
moment.duration(3500000).format("hh:mm", { trim: false })
我的變種
moment.utc(3400000).format("HH:mm")
給出:“00:56”
希望將是有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.