js時間日期格式化封裝函數_javascript技巧
js雖然提供了各種取得時間Date物件的不同屬性方法,如:getDate 方法 | getDay 方法 | getFullYear 方法 | getHours 方法 ... ... 等等,但是卻沒有像java那樣提供一個方法來供用戶來根據自身提供的模板(pattern),來格式化指定時間對象,所以自己就封裝了一個小方法,只供大家閒來調侃-.-,有好的建議還望慷慨指薦哦。
用到知識點:arguments:此物件代表正在執行的函數和呼叫它的函數的參數。不可明確創建,雖然有length屬性,且能像數組一樣以“[]”語法方式取值,但它並不是一個數組。 typeof object :運算符,傳回一個用來表示表達式的資料類型的字串。六種可能: "number," "string," "boolean," "object," "function," 和 "undefined."。 object.constructor:表示建立物件的函數。
object必須是物件或函數的名稱。基礎資料沒有該屬性。 exec 方法:以正規表示式模式在字串中執行查找,並傳回包含該查找結果的一個陣列。沒有找到匹配,則它返回 null。數組中同類型匹配元素不會重複出現。 str.split(Rex|str):以一個正規物件或子字串,將一個字串分割為子字串,然後將結果作為字串陣列傳回。 throw Error('msg'):拋出一個帶有Message訊息的Error。 throw 後面可跟任何表達式。 還有一些for..in用法,三目運算符,substr這些就不講了,比較簡單。
程式碼片段:
/**
* ***js時間日期格式化***
*
* 模版字串採嚴謹格式,超出則會拋出異常,且每類格式只可出現一次,如:yyyy-mm-yyyy 格式會拋出異常
*
* y-年 length: 2/4位元
* q-季度 length: 1位元
* M-月 length: 1~2位
* d-日 length: 1~2位
* H-時 length: 1~2位24小時制,h:12小時制
* m-分 length: 1~2位元
* s-秒 length: 1~2位
* S-毫秒 length: 固定1位
* @param {Date類型物件} date
* @param {String類型範本字串} fmt
* @return 格式化後時間日期字串
* @author lyt
*/
function DateFormat(date, fmt){
if (arguments.length != 2) // 參數個數校驗
throw Error('arguments長度不合法');
if (!date || (typeof date != 'object') || (d.constructor != Date)) // 參數合法性校驗
throw Error(arguments[0] ':型別不為Date型別');
if (/H /.test(fmt) && /h /.test(fmt))
throw Error("小時格式錯誤,同類型只能連續出現一次!");
/* 範本參數校驗,正規驗證方法 */
var verify = function(Rex ){
var arr = new RegExp(Rex).exec(fmt); // 獲得符合結果陣列
if (!arr) // 配對失敗回傳
return "";
if (fmt.split(Rex).length > 2) // 相同類型間隔出現多次
throw Error("fmt格式錯誤:同型別只能連續出現一次!");
return arr[0];
};
/**
* 提供月、天、時、分、秒通用配對替換
* @param {物件o屬性key} r
* @param {r對應正規物件} rex
**/
var common = function(r, rex) {
if(len !=1 && len !=2)
throw Error("月份格式錯誤:M只能出現1/2次");
len == 2 ? fmt=fmt.replace(rex, o[r].length==1 ? "0" o[r] : o[r]) : fmt=fmt.replace(rex, o[r]) ;
}
var o = { // 資料儲存物件
"y ": date.getFullYear() "", // 年
"q ": Math.floor((date.getMonth() 3) / 3), // 季度
"M ": date.getMonth() 1 "", // 月
"d ": date.getDate() "", // 日
"H ": date.getHours() "", // 24時
"h ": date.getHours() "", // 12時
"m ": date.getMinutes() "", // 分
"s ": date.getSeconds() "", // 秒
"S ": date.getMilliseconds() // 毫秒
}
for(var r in o) {
var rex, len, temp;
rex = new RegExp(r);
temp = verify(rex); // 符合所得字串
len = temp.length; // 長度
if(!len || len == 0)
continue;
if(r == "y ") {
if(len !=2 && len != 4)
throw Error("年份格式錯誤:y且只能出現2/4次");
len == 2 ? fmt=fmt.replace(rex, o[r].substr(2,3)) : fmt=fmt.replace(rex, o[r]);
} else if(r == "q ") {
if(len != 1)
throw Error("季度格式錯誤:q只能出現1次");
fmt=fmt.replace(rex, o[r]);
} else if(r == "h ") {
if(len !=1 && len !=2)
throw Error("小時格式錯誤:h且只能出現1/2次");
var h = (o[r] > 12 ? o[r]-12 : o[r]) "";
len == 2 ? fmt=fmt.replace(rex, h.length==1 ? "0" h : h) : fmt=fmt.replace(rex, h);
} else if(r == "S ") {
if(len != 1)
throw Error("毫秒數格式錯誤:S只能出現1次");
fmt=fmt.replace(rex, o[r]);
}else { // (r=="M " || r=="d " || r=="H " || r=="m " || r=="s ")
common(r, rex)
}
}
return fmt;
}
上幾個示範效果,供大家參考:
其他效果就不一一列舉了,感興趣的可以把程式碼拷貝下來直接測試就行了,有任何BUG或者有待優化的地方請慷慨指正哦。
以上便是這款非常好用的封裝函數的介紹了,是不是很實用呢,小伙伴們可以直接使用到自己的項目中。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

1.先開啟手機網路瀏覽器,搜尋微博網頁版,進入後點選左上角頭像按鈕。 2、然後點選右上角設定。 3.點選設定裡面的版本切換選項。 4.接著在版本切換裡選擇彩版選項。 5.點選搜索,進入搜尋頁面。 6.輸入關鍵字後,點選找人。 7.出來的搜尋完成介面點選篩選。 8.最後在發佈時間欄輸入特定日期後,點選篩選即可。

在抖音平台上,許多用戶都渴望獲得等級認證,其中10級燈牌更是展示用戶在抖音上的影響力和認可度。本文將深入探討抖音10級燈牌的價格以及達到此等級所需的時間,以幫助使用者更了解此過程。一、抖音10級燈牌多少錢?抖音10級燈牌的價格會受市場波動和供需情況的影響而有所差異,一般價格在幾千元到萬元之間。這個價格主要包括燈牌本身的成本和可能的服務費用。用戶可透過抖音官方管道或第三方服務機構購買10級燈牌,但在購買時要留意選擇合法管道,以免遭遇虛假或詐欺交易。二、10級粉絲燈牌要幾天?達到10級燈牌

1.先說說我剛開始用的方法,或許大家也在用。先是打開【視野】——】備註模版【。 2.打開後確實能看到日期的地方。 3.先選擇它,並把它刪除。 4.刪除後點選【關閉母版檢視】。 5.再開啟列印預覽,發現日期還是在。 6.其實這個日期不是在這個地方刪除的。應該是在【講義母版】那裡。看下圖。 7.找到日期後把它刪除。 8.現在在打開預覽看一下,就沒有這個日期了。註:其實這個方法也很容易記,因為印刷的是講義,所以應該找【講義母版】。

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

玩家在艾爾登法環中進行遊戲時可以體驗遊戲主線劇情,以及收集遊戲成就,有很多玩家不知道艾爾登法環通關需要多久,玩家的通關流程在30個小時。艾爾登法環通關需要多久答:30小時。 1、這個30小時的通關時長指的雖然不是高手般的速通,但也省略了許多的流程。 2.如果你想獲得更好的遊戲體驗或是體驗完整的劇情,那麼時長上肯定要花費更多的時間。 3.如果玩家是全收集大約要100-120小時。 4.如果是只走主線刷BOSS大約:50-60小時。 5.如果是想全部體驗:150小時打底。

小紅書,一個充滿生活氣息與知識分享的平台,讓越來越多的創作者在這裡暢所欲言。要想在小紅書上獲得更多的關注和點贊,除了內容品質之外,發布作品的時間也是至關重要的。那麼,如何設定小紅書發布作品的時間呢?一、小紅書發布作品時間怎麼設定? 1.了解用戶活躍時間首先,需要先明確小紅書用戶的活躍時間。通常來說,晚上8點到10點以及週末下午是用戶活躍度較高的時段。然而,這個時段也會受到受眾群體和地理等因素的影響而有所不同。因此,為了更能掌握用戶活躍時段,建議對不同族群的行為習慣進行更詳細的分析。透過了解用戶的活

Linux檔案時間檢視技巧詳解在Linux系統中,檔案的時間資訊對於檔案管理和追蹤變更非常重要。 Linux系統透過三種主要時間屬性來記錄檔案的變更訊息,分別是存取時間(atime)、修改時間(mtime)和變更時間(ctime)。本文將詳細介紹如何查看和管理這些文件時間信息,並提供具體的程式碼範例。 1.查看文件時間資訊透過使用ls指令結合參數-l可以列出文

現今,無法開機等,卡頓,我們難免會遇到一些問題,例如係統崩潰、但在使用過程中、手機已成為我們生活中不可或缺的一部分。我們往往束手無策、有時、對於這些問題的解決方法。幫助你解決手機故障,本文將為大家介紹一些手機格式化恢復的方法、讓手機重新恢復正常運作。備份資料-保護重要資訊安全通訊錄等,如照片、聯絡人、以免在格式化過程中遺失、在進行手機格式化之前、首先要考慮的是備份手機上的重要資料和檔案。確保資料的安全性、或選擇將檔案傳輸至雲端儲存服務中,可以透過連接電腦進行備份。使用系統自備恢復功能-簡
