//這個原理是先構建乙個物件,儲存正則需要的表示式的內容,如y+,m+等等,y表示的是年份,所以對應的value是年份,以此類推其他月、天等。採用正則格式化日期
function
dateformat(fmt, date) ;
for (let k in
opt) ;
};return
fmt;
}
然後利用for in迴圈遍歷物件,利用key生成正則物件,比如 opt物件的 「s+」這個屬性的key,構造出的正規表示式/(s+)/,如下圖:
之後使用exec方法去匹配傳的格式字串,exec()方法匹配成功,返回乙個陣列物件,如下圖:
返回結果:陣列元素、index和input兩個屬性
陣列元素:第0個是正規表示式匹配到的所有的字串;第1個元素是正規表示式第1個子表示式匹配到的字串(如果有);第2個元素是正規表示式第2個子表示式匹配到的字串(如果有),之後的依此類推......,如下:
因此在上面格式化時間時,遍歷生成正規表示式,匹配,通過replace方法使用date獲取的值替換fmt字串內匹配到的內容,即依次匹配到fmt內表示年份、月份、天等的字串,使用對應的年、月、日去替換。
exec()方法匹配不成功返回null。
採用test方法時,匹配成功返回的是true,失敗返回false。
無論採用哪種方式都可以使用regexp物件,
如果成功regexp.$1返回匹配到的字串,比如/(m+)/匹配到mm。$0 $2都會返回"",空字串。
padstart(len,str) :該方法用於補全字串
len:補全長度
str:補充的字串,使用這個字串補充。
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padstart(ret[1].length, "0")))解釋:fmt: yyyy-mm-dd hh:mm:ss
ret:每一次匹配的結果,比如匹配到mm,ret[1] = mm,ret[1].length = 2,表示日期格式月份的長度應該是2,此時
(ret[1].length == 1) ?不成立,執行
opt[k].padstart(ret[1].length, "0")),
opt[k]是月份值,如果月份長度不是月份格式長度,表示此時月份小於10,要對月份資料用 0 進行補全,否則不用補全。
js日期格式化
日期格式化 使用方法1 var now new date var nowstr util.dateformat new date yyyy mm dd hh mm ss 使用方法2 var testdate new date var teststr util.dateformat new date ...
js日期格式化
方法一 對date的擴充套件,將 date 轉化為指定格式的string 月 m 日 d 小時 h 分 m 秒 s 季度 q 可以用 1 2 個佔位符,年 y 可以用 1 4 個佔位符,毫秒 s 只能用 1 個佔位符 是 1 3 位的數字 例子 new date format yyyy mm dd ...
Js格式化日期
對date的擴充套件,將 date 轉化為指定格式的string 月 m 日 d 小時 h 分 m 秒 s 季度 q 可以用 1 2 個佔位符,年 y 可以用 1 4 個佔位符,毫秒 s 只能用 1 個佔位符 是 1 3 位的數字 例子 new date format yyyy mm dd hh m...