JavaScript將時間戳轉換為年月日格式

admin發表於2018-09-19

JavaScript中,時間戳是從1970年一月一日(00:00:00 GMT)至當前時間的毫秒數。

獲取時間戳的方式:

[JavaScript] 純文字檢視 複製程式碼
var date=new Date()
date.getTime()

通過使用getTime()可以獲得時間戳。

下面是一段程式碼例項能夠將時間戳轉換為時間格式:

[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,
   "d+":this.getDate(),
   "h+":this.getHours(),
   "m+":this.getMinutes(),
   "s+":this.getSeconds(),
   "q+":Math.floor((this.getMonth()+3)/3),
   "S":this.getMilliseconds()
  }
  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;
}
window.onload=function(){
  var content=document.getElementById("content");
  var theDate=new Date(1320336000000);
  var dateFormate=theDate.format("yyyy年MM月dd日hh小時mm分ss秒");
  var dateGetTime=theDate.format("yyyyMMdd hh:mm:ss");
  content.innerHTML=dateFormate+"<br/>"+dateGetTime 
}
</script> 
</head> 
<body> 
<div id="content"></div>
</body> 
</html>

一.實現原理:

通過prototype原型為Date物件新增一個自定義方法,可以將時間戳轉換為指定的時間格式,在此方法中,首先建立一個物件直接量,物件屬性是"M+"和"N+"等,這是有原因,可以作為正規表示式的匹配模式;物件的屬性值,是時間函式。後面通過正規表示式的匹配實現字串的替換,以達到轉換效果,具體參考程式碼註釋。

二.程式碼註釋:

(1).Date.prototype.format=function(format){},為Date物件新增方法,引數為自定義的時間日期格式。

(2).var o={},建立一個物件直接量。

(3)."M+":this.getMonth()+1,表示月份,之所以+1是因為getMonth()函式的返回值是從0開始的。

(4)."d+":this.getDate(),表示天。

(5)."h+":this.getHours(),表示小時。

(6)."m+":this.getMinutes(),表示分鐘。

(7)."s+":this.getSeconds(),表示秒。

(8)."q+":Math.floor((this.getMonth()+3)/3),表示季度。

(9)."S":this.getMilliseconds(),表示毫秒。

(10).if(/(y+)/.test(format)),判斷是否匹配,如果匹配返回true,否則返回false。

(11).format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)),將傳入表示年份的yyyy部分使用真正的年份替換。,(this.getFullYear()+"")年份是數值型別,數值型別連線一個字元可以將數值型別轉換為字元型別,然後使用substr()函式進行擷取字串操作,此函式的引數是4-RegExp.$1.length,它可以規定擷取的位置,根據"y"的數目,可以將年份格式化為例如2013,013、13等格式。

(12).for(var k in o){},使用for迴圈遍歷物件o中的屬性。

(13).if(new RegExp("("+k+")").test(format)),判斷是否匹配,也就是判斷傳入的字串引數中是否含有相應的時間單位,比如yyyy、MM、dd等等。

(14).format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]: ("00"+o[k]).substr((""+o[k]).length)),對時間格式化,比如獲取的是個位數,前面要加“0”,當然裡面是有變通的,大家自行分析。

(15).return format,返回格式化的時間。

(16).window.onload=function(){},當文件內容完全載入完畢再去執行函式中的程式碼。

(17).var content=document.getElementById("content"),獲取id為content的物件。

(18).var theDate=new Date(1320336000000),建立一個Date物件,建構函式的引數是一個時間戳。

(19).var dateFormate=theDate.format("yyyy年MM月dd日hh小時mm分ss秒"),呼叫函式。

(20).var dateGetTime=theDate.format("yyyy MM dd hh:mm:ss"),同上。

(21).content.innerHTML=dateFormate+"<br/>"+dateGetTime,將內容寫入div。

三.相關閱讀:

(1).關於時間函式可以參閱JavaScript Date物件一章節。

(2).substr()函式可以參閱JavaScript substr()方法一章節。

相關文章