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
|
/*!
* time-stamp <https://github.com/jonschlinkert/time-stamp>
*
* Copyright (c) 2015-2017, Jon Schlinkert.
* Released under the MIT License.
*/
'use strict';
/**
* Parse the given pattern and return a formatted
* timestamp.
*
* @param {String} `pattern` Date pattern.
* @param {Date} `date` Date object.
* @return {String}
*/
module.exports = function(pattern, date) {
if (typeof pattern !== 'string') {
date = pattern;
pattern = 'YYYY:MM:DD';
}
if (!date) date = new Date();
function timestamp() {
var regex = /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:\/]*)/;
var match = regex.exec(pattern);
if (match) {
var increment = method(match[1]);
var val = '00' + String(date[increment[0]]() + (increment[2] || 0));
var res = val.slice(-increment[1]) + (match[2] || '');
pattern = pattern.replace(match[0], res);
timestamp();
}
}
timestamp(pattern);
return pattern;
};
function method(key) {
return ({
YYYY: ['getFullYear', 4],
YY: ['getFullYear', 2],
// getMonth is zero-based, thus the extra increment field
MM: ['getMonth', 2, 1],
DD: ['getDate', 2],
HH: ['getHours', 2],
mm: ['getMinutes', 2],
ss: ['getSeconds', 2],
ms: ['getMilliseconds', 3]
})[key];
}
|