summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/datetime/date.js.map
blob: 0d37bad7940e4433eac6e420fb59580223f8cb76 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/datetime/date.js"],"names":["module","exports","date","format","timestamp","jsdate","f","txtWords","formatChr","formatChrCb","t","s","_pad","n","c","String","length","d","j","D","l","slice","getDate","w","N","S","i","parseInt","getDay","z","a","Date","Y","b","Math","round","W","getFullYear","F","m","M","getMonth","L","o","y","toString","getHours","A","toUpperCase","B","H","getUTCHours","getUTCMinutes","getUTCSeconds","floor","g","G","h","getMinutes","getSeconds","u","getMilliseconds","e","msg","Error","I","UTC","O","tzo","getTimezoneOffset","abs","P","substr","T","Z","replace","r","U","_date","undefined"],"mappings":"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","file":"date.js","sourcesContent":["module.exports = function date (format, timestamp) {\n  //  discuss at: http://locutus.io/php/date/\n  // original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)\n  // original by: gettimeofday\n  //    parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html)\n  // improved by: Kevin van Zonneveld (http://kvz.io)\n  // improved by: MeEtc (http://yass.meetcweb.com)\n  // improved by: Brad Touesnard\n  // improved by: Tim Wiel\n  // improved by: Bryan Elliott\n  // improved by: David Randall\n  // improved by: Theriault (https://github.com/Theriault)\n  // improved by: Theriault (https://github.com/Theriault)\n  // improved by: Brett Zamir (http://brett-zamir.me)\n  // improved by: Theriault (https://github.com/Theriault)\n  // improved by: Thomas Beaucourt (http://www.webapp.fr)\n  // improved by: JT\n  // improved by: Theriault (https://github.com/Theriault)\n  // improved by: Rafał Kukawski (http://blog.kukawski.pl)\n  // improved by: Theriault (https://github.com/Theriault)\n  //    input by: Brett Zamir (http://brett-zamir.me)\n  //    input by: majak\n  //    input by: Alex\n  //    input by: Martin\n  //    input by: Alex Wilson\n  //    input by: Haravikk\n  // bugfixed by: Kevin van Zonneveld (http://kvz.io)\n  // bugfixed by: majak\n  // bugfixed by: Kevin van Zonneveld (http://kvz.io)\n  // bugfixed by: Brett Zamir (http://brett-zamir.me)\n  // bugfixed by: omid (http://locutus.io/php/380:380#comment_137122)\n  // bugfixed by: Chris (http://www.devotis.nl/)\n  //      note 1: Uses global: locutus to store the default timezone\n  //      note 1: Although the function potentially allows timezone info\n  //      note 1: (see notes), it currently does not set\n  //      note 1: per a timezone specified by date_default_timezone_set(). Implementers might use\n  //      note 1: $locutus.currentTimezoneOffset and\n  //      note 1: $locutus.currentTimezoneDST set by that function\n  //      note 1: in order to adjust the dates in this function\n  //      note 1: (or our other date functions!) accordingly\n  //   example 1: date('H:m:s \\\\m \\\\i\\\\s \\\\m\\\\o\\\\n\\\\t\\\\h', 1062402400)\n  //   returns 1: '07:09:40 m is month'\n  //   example 2: date('F j, Y, g:i a', 1062462400)\n  //   returns 2: 'September 2, 2003, 12:26 am'\n  //   example 3: date('Y W o', 1062462400)\n  //   returns 3: '2003 36 2003'\n  //   example 4: var $x = date('Y m d', (new Date()).getTime() / 1000)\n  //   example 4: $x = $x + ''\n  //   example 4: var $result = $x.length // 2009 01 09\n  //   returns 4: 10\n  //   example 5: date('W', 1104534000)\n  //   returns 5: '52'\n  //   example 6: date('B t', 1104534000)\n  //   returns 6: '999 31'\n  //   example 7: date('W U', 1293750000.82); // 2010-12-31\n  //   returns 7: '52 1293750000'\n  //   example 8: date('W', 1293836400); // 2011-01-01\n  //   returns 8: '52'\n  //   example 9: date('W Y-m-d', 1293974054); // 2011-01-02\n  //   returns 9: '52 2011-01-02'\n  //        test: skip-1 skip-2 skip-5\n\n  var jsdate, f\n  // Keep this here (works, but for code commented-out below for file size reasons)\n  // var tal= [];\n  var txtWords = [\n    'Sun', 'Mon', 'Tues', 'Wednes', 'Thurs', 'Fri', 'Satur',\n    'January', 'February', 'March', 'April', 'May', 'June',\n    'July', 'August', 'September', 'October', 'November', 'December'\n  ]\n  // trailing backslash -> (dropped)\n  // a backslash followed by any character (including backslash) -> the character\n  // empty string -> empty string\n  var formatChr = /\\\\?(.?)/gi\n  var formatChrCb = function (t, s) {\n    return f[t] ? f[t]() : s\n  }\n  var _pad = function (n, c) {\n    n = String(n)\n    while (n.length < c) {\n      n = '0' + n\n    }\n    return n\n  }\n  f = {\n    // Day\n    d: function () {\n      // Day of month w/leading 0; 01..31\n      return _pad(f.j(), 2)\n    },\n    D: function () {\n      // Shorthand day name; Mon...Sun\n      return f.l()\n        .slice(0, 3)\n    },\n    j: function () {\n      // Day of month; 1..31\n      return jsdate.getDate()\n    },\n    l: function () {\n      // Full day name; Monday...Sunday\n      return txtWords[f.w()] + 'day'\n    },\n    N: function () {\n      // ISO-8601 day of week; 1[Mon]..7[Sun]\n      return f.w() || 7\n    },\n    S: function () {\n      // Ordinal suffix for day of month; st, nd, rd, th\n      var j = f.j()\n      var i = j % 10\n      if (i <= 3 && parseInt((j % 100) / 10, 10) === 1) {\n        i = 0\n      }\n      return ['st', 'nd', 'rd'][i - 1] || 'th'\n    },\n    w: function () {\n      // Day of week; 0[Sun]..6[Sat]\n      return jsdate.getDay()\n    },\n    z: function () {\n      // Day of year; 0..365\n      var a = new Date(f.Y(), f.n() - 1, f.j())\n      var b = new Date(f.Y(), 0, 1)\n      return Math.round((a - b) / 864e5)\n    },\n\n    // Week\n    W: function () {\n      // ISO-8601 week number\n      var a = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3)\n      var b = new Date(a.getFullYear(), 0, 4)\n      return _pad(1 + Math.round((a - b) / 864e5 / 7), 2)\n    },\n\n    // Month\n    F: function () {\n      // Full month name; January...December\n      return txtWords[6 + f.n()]\n    },\n    m: function () {\n      // Month w/leading 0; 01...12\n      return _pad(f.n(), 2)\n    },\n    M: function () {\n      // Shorthand month name; Jan...Dec\n      return f.F()\n        .slice(0, 3)\n    },\n    n: function () {\n      // Month; 1...12\n      return jsdate.getMonth() + 1\n    },\n    t: function () {\n      // Days in month; 28...31\n      return (new Date(f.Y(), f.n(), 0))\n        .getDate()\n    },\n\n    // Year\n    L: function () {\n      // Is leap year?; 0 or 1\n      var j = f.Y()\n      return j % 4 === 0 & j % 100 !== 0 | j % 400 === 0\n    },\n    o: function () {\n      // ISO-8601 year\n      var n = f.n()\n      var W = f.W()\n      var Y = f.Y()\n      return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0)\n    },\n    Y: function () {\n      // Full year; e.g. 1980...2010\n      return jsdate.getFullYear()\n    },\n    y: function () {\n      // Last two digits of year; 00...99\n      return f.Y()\n        .toString()\n        .slice(-2)\n    },\n\n    // Time\n    a: function () {\n      // am or pm\n      return jsdate.getHours() > 11 ? 'pm' : 'am'\n    },\n    A: function () {\n      // AM or PM\n      return f.a()\n        .toUpperCase()\n    },\n    B: function () {\n      // Swatch Internet time; 000..999\n      var H = jsdate.getUTCHours() * 36e2\n      // Hours\n      var i = jsdate.getUTCMinutes() * 60\n      // Minutes\n      // Seconds\n      var s = jsdate.getUTCSeconds()\n      return _pad(Math.floor((H + i + s + 36e2) / 86.4) % 1e3, 3)\n    },\n    g: function () {\n      // 12-Hours; 1..12\n      return f.G() % 12 || 12\n    },\n    G: function () {\n      // 24-Hours; 0..23\n      return jsdate.getHours()\n    },\n    h: function () {\n      // 12-Hours w/leading 0; 01..12\n      return _pad(f.g(), 2)\n    },\n    H: function () {\n      // 24-Hours w/leading 0; 00..23\n      return _pad(f.G(), 2)\n    },\n    i: function () {\n      // Minutes w/leading 0; 00..59\n      return _pad(jsdate.getMinutes(), 2)\n    },\n    s: function () {\n      // Seconds w/leading 0; 00..59\n      return _pad(jsdate.getSeconds(), 2)\n    },\n    u: function () {\n      // Microseconds; 000000-999000\n      return _pad(jsdate.getMilliseconds() * 1000, 6)\n    },\n\n    // Timezone\n    e: function () {\n      // Timezone identifier; e.g. Atlantic/Azores, ...\n      // The following works, but requires inclusion of the very large\n      // timezone_abbreviations_list() function.\n      /*              return that.date_default_timezone_get();\n       */\n      var msg = 'Not supported (see source code of date() for timezone on how to add support)'\n      throw new Error(msg)\n    },\n    I: function () {\n      // DST observed?; 0 or 1\n      // Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC.\n      // If they are not equal, then DST is observed.\n      var a = new Date(f.Y(), 0)\n      // Jan 1\n      var c = Date.UTC(f.Y(), 0)\n      // Jan 1 UTC\n      var b = new Date(f.Y(), 6)\n      // Jul 1\n      // Jul 1 UTC\n      var d = Date.UTC(f.Y(), 6)\n      return ((a - c) !== (b - d)) ? 1 : 0\n    },\n    O: function () {\n      // Difference to GMT in hour format; e.g. +0200\n      var tzo = jsdate.getTimezoneOffset()\n      var a = Math.abs(tzo)\n      return (tzo > 0 ? '-' : '+') + _pad(Math.floor(a / 60) * 100 + a % 60, 4)\n    },\n    P: function () {\n      // Difference to GMT w/colon; e.g. +02:00\n      var O = f.O()\n      return (O.substr(0, 3) + ':' + O.substr(3, 2))\n    },\n    T: function () {\n      // The following works, but requires inclusion of the very\n      // large timezone_abbreviations_list() function.\n      /*              var abbr, i, os, _default;\n      if (!tal.length) {\n        tal = that.timezone_abbreviations_list();\n      }\n      if ($locutus && $locutus.default_timezone) {\n        _default = $locutus.default_timezone;\n        for (abbr in tal) {\n          for (i = 0; i < tal[abbr].length; i++) {\n            if (tal[abbr][i].timezone_id === _default) {\n              return abbr.toUpperCase();\n            }\n          }\n        }\n      }\n      for (abbr in tal) {\n        for (i = 0; i < tal[abbr].length; i++) {\n          os = -jsdate.getTimezoneOffset() * 60;\n          if (tal[abbr][i].offset === os) {\n            return abbr.toUpperCase();\n          }\n        }\n      }\n      */\n      return 'UTC'\n    },\n    Z: function () {\n      // Timezone offset in seconds (-43200...50400)\n      return -jsdate.getTimezoneOffset() * 60\n    },\n\n    // Full Date/Time\n    c: function () {\n      // ISO-8601 date.\n      return 'Y-m-d\\\\TH:i:sP'.replace(formatChr, formatChrCb)\n    },\n    r: function () {\n      // RFC 2822\n      return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb)\n    },\n    U: function () {\n      // Seconds since UNIX epoch\n      return jsdate / 1000 | 0\n    }\n  }\n\n  var _date = function (format, timestamp) {\n    jsdate = (timestamp === undefined ? new Date() // Not provided\n      : (timestamp instanceof Date) ? new Date(timestamp) // JS Date()\n      : new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int)\n    )\n    return format.replace(formatChr, formatChrCb)\n  }\n\n  return _date(format, timestamp)\n}\n"]}