JavaScript 时间戳格式化自定义样式

leixue 设计开发 2019-04-11 12:12:56 阅读(...) 评论(0)

最近这周子凡在开始研究和开发百度智能小程序,如果经常关注泪雪博客你一定不难发现子凡可是一个非常追求极致的开发者,前不久分享过“PHP 格式化时间显示刚刚、几分钟前、昨天、前天”的文章,这次在百度小程序上也想实现同样的显示方法,由于对 js 并不是特别熟悉,所以就需要好好折腾一番了。

JS 时间戳格式化

JavaScript 对于时间的格式化并不是特别友好,不像 php 中直接使用 date 函数就能非常自由的格式化自己想要的样子,由于在小程序开发时为了便于数据的传输子凡选择的是时间戳,并且为了考虑小程序的加载速度,所以会设定缓存,从而就导致无法通过 php 实时反馈格式化好的时间样式,那么解决这个问题就需要通过 js 来动态时间显示几分钟前、昨天、前天等显示方式。

子凡也就不废话了,由于在网络上并没有找到符合子凡需求的 js 时间格式化代码,故而就东拼西凑的就完成了以下的 js 时间格式化功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
 * JS 时间格式化
 * type 时间格式(yyyy-mm-dd hh:ii:ss / mm-dd / hh:ii / yyyy-mm)可自定义
 * date 毫秒时间戳(1554954127000)
 * 使用:timeFormat('yyyy-mm-dd hh:ii:ss',1554954127000)
 * 说明:紧支持毫秒级时间戳,传统秒级 Unix 时间戳需要乘以 1000 转换为毫秒
 */
function timeFormat(type,date){
	var date = new Date(date);
	var o = {   
		"m+" : date.getMonth()+1,	//月份   
		"d+" : date.getDate(),		//日   
		"h+" : date.getHours(),		//小时   
		"i+" : date.getMinutes(),	//分   
		"s+" : date.getSeconds(),	//秒   
	};   
	if(/(y+)/.test(type)){
		type=type.replace(RegExp.$1,(date.getFullYear()+"").substr(4-RegExp.$1.length)); 
	};    
	for(var k in o){
		if(new RegExp("("+ k +")").test(type)){
			type=type.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+ o[k]).substr((""+o[k]).length))); 
		}; 
	}
	return type; 
}

格式化的时间可以根据自己需求自定义搭配,根据自己的使用需求进行就好,至于 js 实现格式化时间显示刚刚、几分钟前、昨天、前天的功能子凡后面有时间在分享吧,近期子凡会主要研究百度智能小程序方面的开发和对网站优化相关的事情,感兴趣的我们可以一起讨论。

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/javascript-time-format.html

发表评论

登录 后参与评论