mockjs2
Version:
生成随机数据 & 拦截 Ajax 请求 mod版
141 lines (131 loc) • 4.03 kB
JavaScript
/*
## 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)
}
}