标签:
本来想模仿Java里面的SimpleDateFormat()
对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了。
formatDate(date, fmt),其中fmt支持的格式有:
另外,字符的个数决定输出字符的长度,如,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] + ‘‘;