1. 程式人生 > 程式設計 >JS時間戳與日期格式互相轉換的簡單方法示例

JS時間戳與日期格式互相轉換的簡單方法示例

JS和jQuery用了一段時間,最近發現他們沒有自帶的時間戳格式化函式,於是綜合網上相關的時間戳格式化函式,自己寫了一個時間戳格式化函式DateToTime,這個函式提供了多種格式化樣式:

Y-m-d,Y-m-d H:i:s,Y/m/d,Y/m/d H:i:s,Y年m月d日,Y年m月d日 H:i:s

這裡的時間有時僅輸入Y-m-d H:i也是可以使用的

/**
*[TimeToDate時間戳轉換為日期]
*@param{[type]}unixTime[時間戳]
*@param{String}type[Y-m-d,Y-m-dH:i:s,Y/m/d,Y/m/dH:i:s,Y年m月d日,Y年m月d日H:i:s]
*/
functionTimeToDate(unixTime,type="Y-M-DH:i:s"){
vardate=newDate(unixTime*1000);//時間戳為10位需*1000,時間戳為13位的話不需乘1000
vardatetime="";
datetime+=date.getFullYear()+type.substring(1,2);
datetime+=(date.getMonth()+1<10?'0'+(date.getMonth()+1):date.getMonth()+1)+type.substring(3,4);
datetime+=(date.getDate()<10?'0'+(date.getDate()):date.getDate());
if(type.substring(5,6)){
if(type.substring(5,6).charCodeAt()>255){
datetime+=type.substring(5,6);
if(type.substring(7,8)){
datetime+=""+(date.getHours()<10?'0'+(date.getHours()):date.getHours());
if(type.substring(9,10)){
datetime+=type.substring(8,9)+(date.getMinutes()<10?'0'+(date.getMinutes()):date.getMinutes());
if(type.substring(11,12)){
datetime+=type.substring(10,11)+(date.getSeconds()<10?'0'+(date.getSeconds()):date.getSeconds());
};
};
};
}else{
datetime+=""+(date.getHours()<10?'0'+(date.getHours()):date.getHours());
if(type.substring(8,9)){
datetime+=type.substring(7,8)+(date.getMinutes()<10?'0'+(date.getMinutes()):date.getMinutes());
if(type.substring(10,11)){
datetime+=type.substring(9,10)+(date.getSeconds()<10?'0'+(date.getSeconds()):date.getSeconds());
};
};
};
};
returndatetime;
}
TimeToDate("1515640111");//2018-01-1111:08:31
TimeToDate("1515640111","Y-m-d");//2018-01-11
TimeToDate("1515640111","Y-m-dH:i");//2018-01-1111:08
TimeToDate("1515640111","Y-m-dH:i:s");//2018-01-1111:08:31
TimeToDate("1515640111","Y/m/d");//2018/01/11
TimeToDate("1515640111","Y/m/dH:i:s");//2018/01/1111:08:31
TimeToDate("1515640111","Y年m月d日");//2018年01月11日
TimeToDate("1515640111","Y年m月d日H:i:s");//2018年01月11日11:08:31
/**
*[DateToTime日期轉換時間戳]
*@param{[type]}day[日期格式,僅支援標準格式]
*/
function DateToTime(day){
	// re = /(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,2}))?/.exec(day); // 原
	re = /(\d{4})(?:\D?(\d{1,2})(?:\D?(\d{1,2}))?[^\d\s]?)?(?:\s+(\d{1,2})\D?(\d{1,2}))?/.exec(day);
	return new Date(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]||0).getTime()/1000;
}
DateToTime("2018-01-1111:08:31");
DateToTime("2018-01-11");
DateToTime("2018年01月11日11時08分31秒");
DateToTime("2018");

補充時間戳與日期相互轉換:

functionTimeToDate(date,format) {
  format = format || 'YYYY-MM-DD hh:mm:ss';
  var dateTest = (/^(-)?\d{1,10}$/.test(date) || /^(-)?\d{1,13}$/.test(date));
  if(/^[1-9]*[1-9][0-9]*$/.test(date) && dateTest){
    var vdate = parseInt(date);
    if (/^(-)?\d{1,10}$/.test(vdate)) {
      vdate = vdate * 1000;
    } else if (/^(-)?\d{1,13}$/.test(vdate)) {
      vdate = vdate * 1000;
    } else if (/^(-)?\d{1,14}$/.test(vdate)) {
      vdate = vdate * 100;
    } else {
      alert("時間戳格式不正確");
      return;
    }
    var setdate = new Date(vdate);
    return parse({YYYY:setdate.getFullYear(),MM:digit(setdate.getMonth()+1),DD:digit(setdate.getDate()),hh:digit(setdate.getHours()),mm:digit(setdate.getMinutes()),ss:digit(setdate.getSeconds()) },format);
  }else {
    //將日期轉換成時間戳
    var arrs = date.match(/\w+|d+/g),newdate = new Date(arrs[0],parseInt(arrs[1])-1,arrs[2],arrs[3]||0,arrs[4]||0,arrs[5]||0),timeStr = Math.round(newdate.getTime() / 1000);
    return timeStr;
  }

  function parse(ymdhms,format) {
    var regymdzz = "YYYY|MM|DD|hh|mm|ss|zz";
    return format.replace(new RegExp(regymdzz,"g"),function(str,index) {
      return str == "zz" ? "00":digit(ymdhms[str]);
    });
  };
  function digit(num) {
    return num < 10 ? "0" + (num | 0) :num;
  };
};

總結

到此這篇關於JS時間戳與日期格式互相轉換的文章就介紹到這了,更多相關JS時間戳與日期格式互相轉換內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!