整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          前端葵花寶典-javascript之時間格式:HH-

          前端葵花寶典-javascript之時間格式:HH:mm:ss 或mm:ss

          **

          * 時間格式化成: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];

          };

          及時解決工作難點,提高工作效率,排除工作困擾,提供信手拈來的精要代碼。

          回給定毫秒數的可讀格式

          思路

          • ms除以適當的值,以獲得dayhourminute的值;
          • Object.entries() Array.prototype.filter()配合使用以僅保留非零值;
          • 使用Array.prototype.map()為每個值創建字符串,并適當地進行復數化;
          • 使用String.prototype.join(' ')將值組合成字符串。

          實現代碼

          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()。表示世界協調時間。

          最后附上代碼


          主站蜘蛛池模板: 精品一区二区高清在线观看| 亚洲AV本道一区二区三区四区| 亚洲国产一区二区视频网站| 中文字幕无线码一区2020青青| 精品国产香蕉伊思人在线在线亚洲一区二区 | 福利一区福利二区| 国产福利91精品一区二区| 中文字幕久久久久一区| 精品一区二区三区在线观看l | 久久精品一区二区三区日韩| 国产精品主播一区二区| 国产一区二区在线观看麻豆 | 国产一区在线视频| 国产激情精品一区二区三区| 一区二区三区中文| 视频在线一区二区三区| 一区二区三区在线观看中文字幕 | 国产成人一区二区三区| 亚洲AV无码一区二区三区性色| 精品无码日韩一区二区三区不卡| 香蕉久久av一区二区三区| 亚洲AV日韩AV天堂一区二区三区| 久久中文字幕一区二区| 亚洲AV色香蕉一区二区| 国产一区二区三区在线观看精品| 免费日本一区二区| 色偷偷av一区二区三区| 少妇人妻偷人精品一区二区| 亚洲av无码一区二区三区不卡| 精品日产一区二区三区手机| 国产日韩AV免费无码一区二区| 中文字幕一区二区人妻性色| 东京热无码一区二区三区av| 久久久久久综合一区中文字幕| 国产凹凸在线一区二区| 日韩人妻无码一区二区三区99| 亚洲av不卡一区二区三区| 国产一区二区三区手机在线观看| 午夜DV内射一区区| 亚洲一区中文字幕在线观看| 中文字幕乱码亚洲精品一区|