/**
* @文件格式-time.js
* @module 格式化時間
*/
/**
* 將秒格式化為時間字符串,H:MM:SS 或 M:SS。提供指南(在
* seconds) 將強制使用多個前導零來覆蓋
* 指導。
*
* @私人的
* @param {number} 秒
* 轉成字符串的秒數
*
* @param {number} 指南
* 數字(以秒為單位)來建模之後的字符串
*
* @return {字符串}
* 時間格式化為 H:毫米:SS 或 M:SS
*/
const defaultImplementation = function(seconds, guide) {
秒 = 秒 < 0?0:秒;
讓 s = Math.floor(seconds % 60);
讓 m = Math.floor(秒 / 60 % 60);
讓 h = Math.floor(seconds / 3600);
const gm = Math.floor(指南 / 60 % 60);
const gh = Math.floor(guide / 3600);
// 處理無效時間
如果(isNaN(秒)||秒===無限){
// '-' 對於所有關係運算符(例如 <、>=)都是假的,所以這個設置
// 將添加指南指定的最少字段數
h = m = s = '-';
}
// 檢查我們是否需要顯示小時數
h = (H > 0 || 重 > 0)?h + ':':「;
// 如果顯示小時數,我們可能需要添加一個前導零。
// 始終至少顯示一位數的分鐘。
米 = (((h || 克 > = 10) & 米 < 10)?'0 '+ 米:米)+':';
// 檢查秒數是否需要前導零
秒 = (S < 10)?'0 '+ S:S;
返回 h + m + s;
};
// 指向當前實現的內部指針。
讓實現=默認實現;
/**
* 用自定義實現替換默認的 formatTime 實現。
*
* @param {函數} 自定義實現
* 將用於代替默認格式時間的函數
* 執行。將收到以秒為單位的當前時間和
* 指南(以秒為單位)作為參數。
*/
導出函數 setFormatTime(customImplementation) {
實現=自定義實現;
}
/**
* 將 formatTime 重置為默認實現。
*/
導出函數 resetFormatTime() {
實現=默認實現;
}
/**
* 委託給默認時間格式化函數或自定義
* 通過 `setFormatTime` 提供的函數。
*
* 將秒格式化為時間字符串(H:MM:SS 或 M:SS)。提供一個
* 指南(以秒為單位)將強制使用多個前導零來覆蓋
* 指南的長度。
*
* @靜止的
* @example 格式化時間 (125, 600)
* @param {number} 秒
* 轉成字符串的秒數
*
* @param {number} 指南
* 數字(以秒為單位)來建模之後的字符串
*
* @return {字符串}
* 時間格式化為 H:毫米:SS 或 M:SS
*/
功能格式時間(秒,指南=秒){
返回實現(秒,指南);
}
導出默認格式時間;