分享自己写的JS版日期格式化和解析工具类,绝对好用!(转自小名同学)
前言
本来想模仿Java里面的SimpleDateFormat()
对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了。
日期格式化
使用说明
formatDate(date, fmt),其中fmt支持的格式有:
- y(年)
- M(月)
- d(日)
- q(季度)
- w(星期)
- H(24小时制的小时)
- h(12小时制的小时)
- m(分钟)
- s(秒)
- S(毫秒)
另外,字符的个数决定输出字符的长度,如,yy
输出16,yyyy
输出2016,ww
输出周五,www
输出星期五,等等。
代码
完整代码一共30行:
/**
* 将日期格式化成指定格式的字符串
* @param date 要格式化的日期,不传时默认当前时间,也可以是一个时间戳
* @param fmt 目标字符串格式,支持的字符有:y,M,d,q,w,H,h,m,S,默认:yyyy-MM-dd HH:mm:ss
* @returns 返回格式化后的日期字符串
*/
function formatDate(date, fmt)
{
date = date == undefined ? new Date() : date;
date = typeof date == 'number' ? new Date(date) : date;
fmt = fmt || 'yyyy-MM-dd HH:mm:ss';
var obj =
{
'y': date.getFullYear(), // 年份,注意必须用getFullYear
'M': date.getMonth() + 1, // 月份,注意是从0-11
'd': date.getDate(), // 日期
'q': Math.floor((date.getMonth() + 3) / 3), // 季度
'w': date.getDay(), // 星期,注意是0-6
'H': date.getHours(), // 24小时制
'h': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 12小时制
'm': date.getMinutes(), // 分钟
's': date.getSeconds(), // 秒
'S': date.getMilliseconds() // 毫秒
};
var week = ['天', '一', '二', '三', '四', '五', '六'];
for(var i in obj)
{
fmt = fmt.replace(new RegExp(i+'+', 'g'), function(m)
{
var val = obj[i] + ''