前言
JS在处理时间格式方面不够灵活,最初想到用字符串拼接来解决,通过getFullYear()、getMonth()、getDate()获取再拼接相应的格式,表现的十分不灵活。下面的函数能够快速方便的将时间格式化,代码实现也极为巧妙。最后提供了获取最近日期始终时间的函数。
使用
1 2 3 4 5 6 7 8 9 |
var d = new Date().format('yyyy-MM-dd'); d = "2014-11-08" var d = new Date().format('yyyy年MM月dd日'); d = "2014年11月08日" var zone = getRecentMonth(7) zone.start = "2014-11-01" zone.end = "2014-11-08" |
代码
链接:https://gist.github.com/xuanfeng/43d7abdaf9c4cbff1ebd
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 27 28 29 30 31 32 33 34 35 |
// 时间格式化 // 使用:var d = new Date().format('yyyy-MM-dd'); Date.prototype.format = function(format) { var date = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S+": this.getMilliseconds() }; if (/(y+)/i.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); } for (var k in date) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length)); } } return format; } //获取时间区间 //使用:getRecentMonth(7)、getRecentMonth(14)、getRecentMonth(30),默认30天 function getRecentMonth(day){ var today = new Date(), day = day || 30, monthSeconds= today.getTime() - 1000*60*60*24*day; return { start: new Date(monthSeconds).format('yyyy-MM-dd'), end: new Date().format('yyyy-MM-dd') } } |
暂无评论