123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /*
- ## Date
- */
- var patternLetters = {
- yyyy: 'getFullYear',
- yy: function(date) {
- return ('' + date.getFullYear()).slice(2)
- },
- y: 'yy',
- MM: function(date) {
- var m = date.getMonth() + 1
- return m < 10 ? '0' + m : m
- },
- M: function(date) {
- return date.getMonth() + 1
- },
- dd: function(date) {
- var d = date.getDate()
- return d < 10 ? '0' + d : d
- },
- d: 'getDate',
- HH: function(date) {
- var h = date.getHours()
- return h < 10 ? '0' + h : h
- },
- H: 'getHours',
- hh: function(date) {
- var h = date.getHours() % 12
- return h < 10 ? '0' + h : h
- },
- h: function(date) {
- return date.getHours() % 12
- },
- mm: function(date) {
- var m = date.getMinutes()
- return m < 10 ? '0' + m : m
- },
- m: 'getMinutes',
- ss: function(date) {
- var s = date.getSeconds()
- return s < 10 ? '0' + s : s
- },
- s: 'getSeconds',
- SS: function(date) {
- var ms = date.getMilliseconds()
- return ms < 10 && '00' + ms || ms < 100 && '0' + ms || ms
- },
- S: 'getMilliseconds',
- A: function(date) {
- return date.getHours() < 12 ? 'AM' : 'PM'
- },
- a: function(date) {
- return date.getHours() < 12 ? 'am' : 'pm'
- },
- T: 'getTime'
- }
- module.exports = {
- // 日期占位符集合。
- _patternLetters: patternLetters,
- // 日期占位符正则。
- _rformat: new RegExp((function() {
- var re = []
- for (var i in patternLetters) re.push(i)
- return '(' + re.join('|') + ')'
- })(), 'g'),
- // 格式化日期。
- _formatDate: function(date, format) {
- return format.replace(this._rformat, function creatNewSubString($0, flag) {
- return typeof patternLetters[flag] === 'function' ? patternLetters[flag](date) :
- patternLetters[flag] in patternLetters ? creatNewSubString($0, patternLetters[flag]) :
- date[patternLetters[flag]]()
- })
- },
- // 生成一个随机的 Date 对象。
- _randomDate: function(min, max) { // min, max
- min = min === undefined ? new Date(0) : min
- max = max === undefined ? new Date() : max
- return new Date(Math.random() * (max.getTime() - min.getTime()))
- },
- // 返回一个随机的日期字符串。
- date: function(format) {
- format = format || 'yyyy-MM-dd'
- return this._formatDate(this._randomDate(), format)
- },
- // 返回一个随机的时间字符串。
- time: function(format) {
- format = format || 'HH:mm:ss'
- return this._formatDate(this._randomDate(), format)
- },
- // 返回一个随机的日期和时间字符串。
- datetime: function(format) {
- format = format || 'yyyy-MM-dd HH:mm:ss'
- return this._formatDate(this._randomDate(), format)
- },
- // 返回当前的日期和时间字符串。
- now: function(unit, format) {
- // now(unit) now(format)
- if (arguments.length === 1) {
- // now(format)
- if (!/year|month|day|hour|minute|second|week/.test(unit)) {
- format = unit
- unit = ''
- }
- }
- unit = (unit || '').toLowerCase()
- format = format || 'yyyy-MM-dd HH:mm:ss'
- var date = new Date()
- /* jshint -W086 */
- // 参考自 http://momentjs.cn/docs/#/manipulating/start-of/
- switch (unit) {
- case 'year':
- date.setMonth(0)
- case 'month':
- date.setDate(1)
- case 'week':
- case 'day':
- date.setHours(0)
- case 'hour':
- date.setMinutes(0)
- case 'minute':
- date.setSeconds(0)
- case 'second':
- date.setMilliseconds(0)
- }
- switch (unit) {
- case 'week':
- date.setDate(date.getDate() - date.getDay())
- }
- return this._formatDate(date, format)
- }
- }
|