传入标准时间,返回指定日期格式

  目录

传入标准时间,返回指定日期格式

传入标准时间,返回指定日期格式

平时在开发时经常会用到获取当前日期,有时候会自己写一个,今天网上闲逛,发现一个写的不错的,记录一下,以备后用。

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
let common = {
/**
* 传入标准时间,返回指定日期格式
* @param {Number} date
* @param {String} format
* @example
* - dateSerialization(1511181312647, "y-mm-dd h:i:s")
* - @return 2017-11-20 20:35:12
*/
dateSerialization(date, format) {
let dateObj;
let DEFAULT_FORMAT = "y-mm-dd h:i:s";
let _patternArr = ["y", "mm", "dd", "h", "i", "s"];
let _patternMap = {
y: function(d) {
return d.getFullYear();
},
m: function(d) {
return d.getMonth() + 1;
},
mm: function(d) {
return _pad(d.getMonth() + 1);
},
d: function(d) {
return d.getDate();
},
dd: function(d) {
return _pad(d.getDate());
},
h: function(d) {
return _pad(d.getHours());
},
i: function(d) {
return _pad(d.getMinutes());
},
s: function(d) {
return _pad(d.getSeconds());
}
};

if (/^\d+$/.test(date)) {
dateObj = new Date(parseInt(date));
} else if (typeof date == "string") {
dateObj = new Date(date.replace(/-/g, "/"));
} else if (_isDate(date)) {
dateObj = date;
}

// 非法数据
if (!dateObj || dateObj.toString() == "Invalid Date") {
throw new Error("[common.date.format]the input cannot be converted to date object(" + date + ")");
return;
}

format = format || DEFAULT_FORMAT;

let _resultArr = format.split(/-|:|\s/);
let resultObj = {};
let result = "";

_patternArr.forEach(k => {
resultObj[k] = _patternMap[k](dateObj);
});

_resultArr.forEach(k => {
let regExp = new RegExp(k);

format = format.replace(regExp, function(e) {
return resultObj[e];
});
});

return format;
}
};

function _toString(v) {
return Object.prototype.toString.call(v);
}

function _isDate(v) {
return _toString(v) == "[object Date]";
}

function _pad(n) {
return n > 9 ? n : "0" + n;
}

export default common;