Blame view

node_modules/time-stamp/index.js 1.75 KB
ce4c83ff   wxy   初始提交
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
  /*!
   * time-stamp <https://github.com/jonschlinkert/time-stamp>
   *
   * Copyright (c) 2015-2018, 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.
   * @param  {Bool} `useUTC` Whether or not to use UTC (local timezone is used otherwise)
   * @return {String}
   */
  
  function _getTimestamp(pattern, date, useUTC) {
    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], useUTC);
        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, useUTC) {
    return ({
      YYYY: [useUTC ? 'getUTCFullYear' : 'getFullYear', 4],
      YY: [useUTC ? 'getUTCFullYear' : 'getFullYear', 2],
      // getMonth is zero-based, thus the extra increment field
      MM: [useUTC ? 'getUTCMonth' : 'getMonth', 2, 1],
      DD: [useUTC ? 'getUTCDate' : 'getDate', 2],
      HH: [useUTC ? 'getUTCHours' : 'getHours', 2],
      mm: [useUTC ? 'getUTCMinutes' : 'getMinutes', 2],
      ss: [useUTC ? 'getUTCSeconds' : 'getSeconds', 2],
      ms: [useUTC ? 'getUTCMilliseconds' : 'getMilliseconds', 3]
    })[key];
  }
  
  module.exports = function(pattern, date) {
    return _getTimestamp(pattern, date, false);
  };
  
  module.exports.utc = function(pattern, date) {
    return _getTimestamp(pattern, date, true);
  };