JavaScript時間日期格式化
原生的時間日期可讀性很差,有時格式可以說比較狂野,通常不能夠滿足我們的需要。
下面通過例項程式碼詳細介紹一下如何實現自定義時間日期格式化功能。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } if(/(y+)/.test(format)){ format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o){ if(new RegExp("("+ k +")").test(format)){ format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length)); } } return format; } setInterval(function(){ var time = new Date().format("hh:mm:ss"); var date = new Date().format("yyyy-MM-dd"); document.getElementById("Time").innerHTML=time; document.getElementById("Date").innerHTML=date; },1000); </script> </head> <body> <div id="Date"></div> <div id="Time"></div> </body> </html>
程式碼實現了我們的要求,能夠實現自定義格式化效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).Date.prototype.format=function(format){},為Date例項新增一個方法,引數用來標識格式的字串。
(2).var o = {},宣告一個物件,屬性可以用來作為正規表示式進行匹配,屬性值是對應時間日期。
(3)."M+" : this.getMonth()+1,表示月份,加1是因為getMonth()方法獲取的值總比當前月份小1,比如一月份,那麼獲取的值是0。
(4)."q+" : Math.floor((this.getMonth()+3)/3),表示季度。
(5).if(/(y+)/.test(format)),判斷引數字串中是否存在格式化年份的標識;y是年份的標識,沒有放在物件o中,是因為年份是四位的。
(6).format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)),RegExp.$1表示第一個子表示式,這就是表示年份的字串標識,比如"yyyy";(this.getFullYear()+"").substr(4-RegExp.$1.length)擷取字串,比如"yyyy"表示保留四位年份如"2014",那麼就是從第一個開始擷取。最後進行替換。
(7).for(var k in o),遍歷物件的屬性。
(8).if(new RegExp("("+ k +")").test(format)),判斷引數字串中是否存在對應的時間日期格式字串。
(9).format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]: ("00"+ o[k]).substr((""+o[k]).length)),進行字串替換,當然裡面有點小技巧,RegExp.$1.length==1表示時間日期個位的時候,前面不需要加0,也就是8,而不是08這種形式,("00"+ o[k]).substr((""+o[k]).length)這個實現加0效果。
二.相關閱讀:
(1).關於時間物件參閱JavaScript Date物件一章節。
(2).replace()參閱正規表示式replace()一章節。
(3).substr()參閱JavaScript substr()一章節。
(4).prototype參閱JavaScript prototype一章節。
相關文章
- JavaScript 日期和時間的格式化JavaScript
- 日期時間格式化
- JavaScript 時間日期操作JavaScript
- JavaScript動態時間日期JavaScript
- JavaScript 動態時間日期JavaScript
- JavaScript實時變化時間日期JavaScript
- 時間日期格式化程式碼例項
- JavaScript 時間日期格式轉換JavaScript
- JavaScript 時間日期轉換成中文JavaScript
- GsonBuilder匯出null值、格式化輸出、日期時間UINull
- jira修改RoadMap裡的時間格式,硬核日期格式化
- js正則格式化日期時間自動補0JS
- JavaScript 獲取指定時間前幾天日期JavaScript
- 簡易實用的JavaScript日期時間操作!JavaScript
- Mysql 日期格式化 複雜日期區間查詢MySql
- 時間格式化大小寫含義(Java 計算時間差以及比較日期大小 )Java
- 細說PHP筆記08(第12章)--日期和時間,建立時間戳,mktime轉換unix時間戳,獲取字串時間,獲得日期和時間資訊,日期和時間格式化輸出,microtime()獲取微秒數PHP筆記時間戳字串
- 鴻蒙Next應用國際化:時間與日期格式化鴻蒙
- Java日期時間API系列42-----一種高效的中文日期格式化和解析方法JavaAPI
- javascript和PHP及MYSQL時間格式化函式JavaScriptPHPMySql函式
- iOS日期時間iOS
- 日期和時間
- 日期時間類
- 日期和時間格式
- Python 日期和時間Python
- Java日期和時間Java
- datetime日期和時間
- JavaScript獲取兩個日期之間所有的日期JavaScript
- JavaScript 中如何將日期格式化為 DD/MM/YYYYJavaScript
- 【JAVA8新的時間與日期 API】- 傳統時間格式化的執行緒安全問題JavaAPI執行緒
- Python格式化時間Python
- 格式化時間 戳
- mysql 獲取當前日期函式及時間格式化引數詳解MySql函式
- linux21-日期時間Linux
- Clickhouse 時間日期函式函式
- Unix 時間戳與日期時間戳
- echarts 睡眠時間段+日期Echarts
- C++資料格式化3 - 格式化時間區間(使用時長)C++