格式化日期对象

js中Date对象的构造方法中可以为'yyyy/MM/dd'格式的字符串,也可以为时间戳

所以我们可以利用Date的构造方法从而创建Date对象。

下面举个栗子:

字符串格式:

var dateStr = "2019-07-31 18:00:00";
var temp = dateStr.replace(/-/g,"/");
var date = new Date(temp);

时间戳格式: 

var timestamp = 1575194400000;
var date = new Date(timestamp);

好了,既然Date对象能够创建出来,那我们就可以根据日期格式来生成我们所需要的时间。

下面来个简单的demo

/**
*输出的格式为yyyy-MM-dd HH:mm:ss E
*/
function getDate(){
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth();
    var day = now.getDate();
    var hour = now.getHours();
    var min = now.getMinutes();
    var sec = now.getSeconds();
    var week = now.getDay();
    var weekarr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    if(month <10){
		month = "0"+month;
	}
	if(day <10){
		day = "0"+day;
	}
	if(hour <10){
		hour = "0"+hour;
	}
	if(min <10){
		min = "0"+min;
	}
	if(sec <10){
		sec = "0"+sec;
	}
	return year+"-"+month+"-"+day+" "+hour+":"+min+":"+sec+" "+weekarr[week];
}

下面是万能型的日期解析

/**
 *     
* 对Date的扩展,将 Date 转化为指定格式的String<br/>
* 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符<br/>    
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)<br/>      
* eg:<br/>      
* parseTimestamp(new Date(),"yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423<br/>      
* parseTimestamp(new Date(),"yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04<br/>      
* parseTimestamp(new Date(),"yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04<br/>      
* parseTimestamp(new Date(),"yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04<br/>      
* parseTimestamp(new Date(),"yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18<br/>     
 * @param time	因为在js中new Date().getTime()少了微秒,所以要乘以1000
 * @param fmt
 * @returns
 */
function parseTimestamp(time,fmt){
	var d;
	if(typeof time=='string'){
		time=time.replace(/\-/g,"/");
		d=new Date(time);
	}else if(typeof time=='number'){
		d=new Date(time);
	}else if(typeof time=='object'){
		if(time.getTime){
			d=time;
		}else{
			d=new Date(time.time);
		}
	}
	fmt=fmt?fmt:"yyyy-MM-dd";
	var o = {         
	    "M+" : d.getMonth()+1, //月份         
	    "d+" : d.getDate(), //日         
	    "h+" : d.getHours()%12 == 0 ? 12 : d.getHours()%12, //小时         
	    "H+" : d.getHours(), //小时         
	    "m+" : d.getMinutes(), //分         
	    "s+" : d.getSeconds(), //秒         
	    "q+" : Math.floor((d.getMonth()+3)/3), //季度         
	    "S" : d.getMilliseconds() //毫秒         
    };         
    var week = {         
	    "0" : "\u65e5",         
	    "1" : "\u4e00",         
	    "2" : "\u4e8c",         
	    "3" : "\u4e09",         
	    "4" : "\u56db",         
	    "5" : "\u4e94",         
	    "6" : "\u516d"        
    };         
    if(/(y+)/.test(fmt)){         
        fmt=fmt.replace(RegExp.$1, (d.getFullYear()+"").substr(4 - RegExp.$1.length));         
    }         
    if(/(E+)/.test(fmt)){         
        fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[d.getDay()+""]);         
    }         
    for(var k in o){         
        if(new RegExp("("+ k +")").test(fmt)){         
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));         
        }         
    }
    return fmt;
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值