**
* 時間格式化成:HH:mm:ss
*/
function secondsToHMS(seconds) {
let second=seconds % 60;
let minute=Math.floor(seconds / 60) % 60;
let hour=Math.floor(Math.floor(seconds / 60) / 60);
if (second < 10) second="0" + second;
if (minute < 10) minute="0" + minute;
if (hour < 10) hour="0" + hour;
return `${hour}:${minute}:${second}`;
};
/**
* 時間格式化成:mm:ss
*/
function secondsToMS(seconds) {
let second=seconds % 60;
let minute=Math.floor(seconds / 60);
if (second < 10) second="0" + second;
if (minute < 10) minute="0" + minute;
return `${minute}:${second}`;
};
/**
* 時間格式化成:HH:mm:ss
*/
function formatToHMS(seconds) {
let hour=(~~(seconds / 3600)).toString().padStart(2, '0');
let minute=(~~((seconds % 3600) / 60)).toString().padStart(2, '0');
let second=(~~(seconds % 60)).toString().padStart(2, '0');
return [hour, minute, second];
};
/**
* 時間格式化成:mm:ss
*/
function formatToMS(seconds) {
let minute=(~~(seconds / 60)).toString().padStart(2, '0');
let second=(~~(seconds % 60)).toString().padStart(2, '0');
return [minute, second];
};
及時解決工作難點,提高工作效率,排除工作困擾,提供信手拈來的精要代碼。
回給定毫秒數的可讀格式
const formatDuration=( ms )=> {
if(ms < 0) ms=-ms;
let time={
day: Math.floor(ms / 86400000),
hour: Math.floor(ms / 3600000) % 24,
minute: Math.floor(ms / 60000) % 60
}
return Object.entries(time)
.filter(val=> val[1] !==0)
.map(([key, val])=>{
if(key==='day') return `${val}天`
if(key==='hour') return `${val}時`
if(key==='minute') return `${val}分`
})
.join(' ');
}
let t1=formatDuration(62341001);
console.log(t1);
let t2=formatDuration(34325055574);
console.log(t2);
17時 19分
397天 6時 44分
代碼實現參閱:formatDuration - 30 seconds of code
CMAScript 提供了 Date 類型來處理時間和日期。 Date 類型內置一系列獲取和設置日期時間信息的方法。
一. Date 類型
ECMAScript 中的 Date 類型是在早期 Java 中 java.util.Date 類基礎上構建的。 為此, Date類型使用 UTC (Coordinated Universal Time,國際協調時間[又稱世界統一時間]) 1970 年 1 月1 日午夜(零時)開始經過的毫秒來保存日期。在使用這種數據存儲格式的條件下,Date 類型保存的日期能夠精確到 1970 年 1 月 1 日之前或之后的 285616 年。
創建一個日期對象,使用 new 運算符和 Date 構造方法(構造函數)即可。
var box=new Date(); //創建一個日期對象
在調用 Date 構造方法而不傳遞參數的情況下, 新建的對象自動獲取當前的時間和日期。
alert(box); //不同瀏覽器顯示不同
ECMAScript 提供了兩個方法,Date.parse()和 Date.UTC()。Date.parse()方法接收一個表示日期的字符串參數,然后嘗試根據這個字符串返回相應的毫秒數。
Date.parse()應該支持哪種日期格式,因此方法的行為因實現而異,因地區而異。默認通常接收的日期格式如下:
1.'月/日/年',如 6/13/2011;
2.'英文月名 日, 年',如 May 25, 2004;
3.'英文星期幾 英文月名 日 年 時:分:秒 時區', 如 Tue May 25 2004 00:00:00 GMT-070
alert(Date.parse('6/13/2011')); //1307894400000
如果 Date.parse()沒有傳入或者不是標準的日期格式,那么就會返回 NaN。
alert(Date.parse()); //NaN
如果想輸出指定的日期,那么把 Date.parse()傳入 Date 構造方法里。
var box=new Date(Date.parse('6/13/2011'));//Mon Jun 13 2011 00:00:00 GMT+0800
var box=new Date('6/13/2011'); //直接傳入,Date.parse()后臺被調用
Date.UTC()方法同樣也返回表示日期的毫秒數, 但它與 Date.parse()在構建值時使用不同的信息。 (年份, 基于 0 的月份[0 表示 1 月, 1 表示 2 月], 月中的哪一天[1-31], 小時數[0-23] ,分鐘,秒以及毫秒)。只有前兩個參數是必須的。如果沒有提供月數,則天數為 1;如果省略其他參數,則統統為 0.
alert(Date.UTC(2011,11)); //1322697600000
如果 Date.UTC()參數傳遞錯誤,那么就會出現負值或者 NaN 等非法信息。
alert(Date.UTC()); //負值或者 NaN
如果要輸出指定日期,那么直接把 Date.UTC()傳入 Date 構造方法里即可。
var box=new Date(Date.UTC(2011,11, 5, 15, 13, 16));
二. 通用的方法
與其他類型一樣,Date 類型也重寫了 toLocaleString()、toString()和 valueOf()方法;但這些方法返回值與其他類型中的方法不同。
var box=new Date(Date.UTC(2011,11, 5, 15, 13, 16));
alert('toString:' + box.toString());
alert('toLocaleString:' + box.toLocaleString()); //按本地格式輸出
注:這兩個方法在不同瀏覽器顯示的效果又不一樣,但不用擔心,這兩個方法只是在調試比較有用,在顯示時間和日期上,沒什么價值。valueOf()方法顯示毫秒數。
三. 日期格式化方法
Date 類型還有一些專門用于將日期格式化為字符串的方法。
var box=new Date();
alert(box.toDateString()); //以特定的格式顯示星期幾、月、日和年
alert(box.toTimeString()); //以特定的格式顯示時、分、秒和時區
alert(box.toLocaleDateString()); //以特定地區格式顯示星期幾、月、日和年
alert(box.toLocaleTimeString()); //以特定地區格式顯示時、分、秒和時區
alert(box.toUTCString()); //以特定的格式顯示完整的 UTC 日期。
四. 組件方法
組件方法,是為我們單獨獲取你想要的各種時間/日期而提供的方法。需要注意的時候 ,這些方法中,有帶 UTC 的,有不帶 UTC 的。UTC 日期指的是在沒有時區偏差的情況下的日期值。
alert(box.getTime()); //獲取日期的毫秒數,和 valueOf()返回一致
alert(box.setTime(100)); //以毫秒數設置日期,會改變整個日期
alert(box.getFullYear()); //獲取四位年份
alert(box.setFullYear(2012)); //設置四位年份,返回的是毫秒數
alert(box.getMonth()); //獲取月份,沒指定月份,從 0 開始算起
alert(box.setMonth(11)); //設置月份
alert(box.getDate()); //獲取日期
alert(box.setDate(8)); //設置日期,返回毫秒數
alert(box.getDay()); //返回星期幾,0 表示星期日,6 表示星期六
alert(box.setDay(2)); //設置星期幾
alert(box.getHours()); //返回時
alert(box.setHours(12)); //設置時
alert(box.getMinutes()); //返回分鐘
alert(box.setMinutes(22)); //設置分鐘
alert(box.getSeconds()); //返回秒數
alert(box.setSeconds(44)); //設置秒數
alert(box.getMilliseconds()); //返回毫秒數
alert(box.setMilliseconds()); //設置毫秒數
alert(box.getTimezoneOffset()); //返回本地時間和 UTC 時間相差的分鐘數
注: 以上方法除了 getTimezoneOffset(), 其他都具有 UTC 功能, 例如 setDate()及 getDate()獲取星期幾,那么就會有 setUTCDate()及 getUTCDate()。表示世界協調時間。
最后附上代碼
*請認真填寫需求信息,我們會在24小時內與您取得聯系。