You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
/*! |
|
* 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]; |
|
}
|
|
|