summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/datetime/strtotime.js.map
blob: 51b62a2d9a4e27c0cd386debe59fa5a12ca0da12 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/datetime/strtotime.js"],"names":["module","exports","strtotime","text","now","parsed","match","today","year","date","days","ranges","len","times","regex","i","fail","replace","toLowerCase","pattern","RegExp","join","Date","parseInt","getFullYear","getMonth","getDate","isNaN","getTime","parse","lastNext","type","range","modifier","diff","day","getDay","setDate","process","val","splt","split","substring","typeIsNumber","test","ago","num","hasOwnProperty","length"],"mappings":"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","file":"strtotime.js","sourcesContent":["module.exports = function strtotime (text, now) {\n  //  discuss at: http://locutus.io/php/strtotime/\n  // original by: Caio Ariede (http://caioariede.com)\n  // improved by: Kevin van Zonneveld (http://kvz.io)\n  // improved by: Caio Ariede (http://caioariede.com)\n  // improved by: A. Matías Quezada (http://amatiasq.com)\n  // improved by: preuter\n  // improved by: Brett Zamir (http://brett-zamir.me)\n  // improved by: Mirko Faber\n  //    input by: David\n  // bugfixed by: Wagner B. Soares\n  // bugfixed by: Artur Tchernychev\n  // bugfixed by: Stephan Bösch-Plepelits (http://github.com/plepe)\n  //      note 1: Examples all have a fixed timestamp to prevent\n  //      note 1: tests to fail because of variable time(zones)\n  //   example 1: strtotime('+1 day', 1129633200)\n  //   returns 1: 1129719600\n  //   example 2: strtotime('+1 week 2 days 4 hours 2 seconds', 1129633200)\n  //   returns 2: 1130425202\n  //   example 3: strtotime('last month', 1129633200)\n  //   returns 3: 1127041200\n  //   example 4: strtotime('2009-05-04 08:30:00 GMT')\n  //   returns 4: 1241425800\n  //   example 5: strtotime('2009-05-04 08:30:00+00')\n  //   returns 5: 1241425800\n  //   example 6: strtotime('2009-05-04 08:30:00+02:00')\n  //   returns 6: 1241418600\n  //   example 7: strtotime('2009-05-04T08:30:00Z')\n  //   returns 7: 1241425800\n\n  var parsed\n  var match\n  var today\n  var year\n  var date\n  var days\n  var ranges\n  var len\n  var times\n  var regex\n  var i\n  var fail = false\n\n  if (!text) {\n    return fail\n  }\n\n  // Unecessary spaces\n  text = text.replace(/^\\s+|\\s+$/g, '')\n    .replace(/\\s{2,}/g, ' ')\n    .replace(/[\\t\\r\\n]/g, '')\n    .toLowerCase()\n\n  // in contrast to php, js Date.parse function interprets:\n  // dates given as yyyy-mm-dd as in timezone: UTC,\n  // dates with \".\" or \"-\" as MDY instead of DMY\n  // dates with two-digit years differently\n  // etc...etc...\n  // ...therefore we manually parse lots of common date formats\n  var pattern = new RegExp([\n    '^(\\\\d{1,4})',\n    '([\\\\-\\\\.\\\\/:])',\n    '(\\\\d{1,2})',\n    '([\\\\-\\\\.\\\\/:])',\n    '(\\\\d{1,4})',\n    '(?:\\\\s(\\\\d{1,2}):(\\\\d{2})?:?(\\\\d{2})?)?',\n    '(?:\\\\s([A-Z]+)?)?$'\n  ].join(''))\n  match = text.match(pattern)\n\n  if (match && match[2] === match[4]) {\n    if (match[1] > 1901) {\n      switch (match[2]) {\n        case '-':\n          // YYYY-M-D\n          if (match[3] > 12 || match[5] > 31) {\n            return fail\n          }\n\n          return new Date(match[1], parseInt(match[3], 10) - 1, match[5],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n        case '.':\n          // YYYY.M.D is not parsed by strtotime()\n          return fail\n        case '/':\n          // YYYY/M/D\n          if (match[3] > 12 || match[5] > 31) {\n            return fail\n          }\n\n          return new Date(match[1], parseInt(match[3], 10) - 1, match[5],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n      }\n    } else if (match[5] > 1901) {\n      switch (match[2]) {\n        case '-':\n          // D-M-YYYY\n          if (match[3] > 12 || match[1] > 31) {\n            return fail\n          }\n\n          return new Date(match[5], parseInt(match[3], 10) - 1, match[1],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n        case '.':\n          // D.M.YYYY\n          if (match[3] > 12 || match[1] > 31) {\n            return fail\n          }\n\n          return new Date(match[5], parseInt(match[3], 10) - 1, match[1],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n        case '/':\n          // M/D/YYYY\n          if (match[1] > 12 || match[3] > 31) {\n            return fail\n          }\n\n          return new Date(match[5], parseInt(match[1], 10) - 1, match[3],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n      }\n    } else {\n      switch (match[2]) {\n        case '-':\n          // YY-M-D\n          if (match[3] > 12 || match[5] > 31 || (match[1] < 70 && match[1] > 38)) {\n            return fail\n          }\n\n          year = match[1] >= 0 && match[1] <= 38 ? +match[1] + 2000 : match[1]\n          return new Date(year, parseInt(match[3], 10) - 1, match[5],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n        case '.':\n          // D.M.YY or H.MM.SS\n          if (match[5] >= 70) {\n            // D.M.YY\n            if (match[3] > 12 || match[1] > 31) {\n              return fail\n            }\n\n            return new Date(match[5], parseInt(match[3], 10) - 1, match[1],\n            match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n          }\n          if (match[5] < 60 && !match[6]) {\n            // H.MM.SS\n            if (match[1] > 23 || match[3] > 59) {\n              return fail\n            }\n\n            today = new Date()\n            return new Date(today.getFullYear(), today.getMonth(), today.getDate(),\n            match[1] || 0, match[3] || 0, match[5] || 0, match[9] || 0) / 1000\n          }\n\n          // invalid format, cannot be parsed\n          return fail\n        case '/':\n          // M/D/YY\n          if (match[1] > 12 || match[3] > 31 || (match[5] < 70 && match[5] > 38)) {\n            return fail\n          }\n\n          year = match[5] >= 0 && match[5] <= 38 ? +match[5] + 2000 : match[5]\n          return new Date(year, parseInt(match[1], 10) - 1, match[3],\n          match[6] || 0, match[7] || 0, match[8] || 0, match[9] || 0) / 1000\n        case ':':\n          // HH:MM:SS\n          if (match[1] > 23 || match[3] > 59 || match[5] > 59) {\n            return fail\n          }\n\n          today = new Date()\n          return new Date(today.getFullYear(), today.getMonth(), today.getDate(),\n          match[1] || 0, match[3] || 0, match[5] || 0) / 1000\n      }\n    }\n  }\n\n  // other formats and \"now\" should be parsed by Date.parse()\n  if (text === 'now') {\n    return now === null || isNaN(now)\n      ? new Date().getTime() / 1000 | 0\n      : now | 0\n  }\n  if (!isNaN(parsed = Date.parse(text))) {\n    return parsed / 1000 | 0\n  }\n  // Browsers !== Chrome have problems parsing ISO 8601 date strings, as they do\n  // not accept lower case characters, space, or shortened time zones.\n  // Therefore, fix these problems and try again.\n  // Examples:\n  //   2015-04-15 20:33:59+02\n  //   2015-04-15 20:33:59z\n  //   2015-04-15t20:33:59+02:00\n  pattern = new RegExp([\n    '^([0-9]{4}-[0-9]{2}-[0-9]{2})',\n    '[ t]',\n    '([0-9]{2}:[0-9]{2}:[0-9]{2}(\\\\.[0-9]+)?)',\n    '([\\\\+-][0-9]{2}(:[0-9]{2})?|z)'\n  ].join(''))\n  match = text.match(pattern)\n  if (match) {\n    // @todo: time zone information\n    if (match[4] === 'z') {\n      match[4] = 'Z'\n    } else if (match[4].match(/^([+-][0-9]{2})$/)) {\n      match[4] = match[4] + ':00'\n    }\n\n    if (!isNaN(parsed = Date.parse(match[1] + 'T' + match[2] + match[4]))) {\n      return parsed / 1000 | 0\n    }\n  }\n\n  date = now ? new Date(now * 1000) : new Date()\n  days = {\n    'sun': 0,\n    'mon': 1,\n    'tue': 2,\n    'wed': 3,\n    'thu': 4,\n    'fri': 5,\n    'sat': 6\n  }\n  ranges = {\n    'yea': 'FullYear',\n    'mon': 'Month',\n    'day': 'Date',\n    'hou': 'Hours',\n    'min': 'Minutes',\n    'sec': 'Seconds'\n  }\n\n  function lastNext (type, range, modifier) {\n    var diff\n    var day = days[range]\n\n    if (typeof day !== 'undefined') {\n      diff = day - date.getDay()\n\n      if (diff === 0) {\n        diff = 7 * modifier\n      } else if (diff > 0 && type === 'last') {\n        diff -= 7\n      } else if (diff < 0 && type === 'next') {\n        diff += 7\n      }\n\n      date.setDate(date.getDate() + diff)\n    }\n  }\n\n  function process (val) {\n    // @todo: Reconcile this with regex using \\s, taking into account\n    // browser issues with split and regexes\n    var splt = val.split(' ')\n    var type = splt[0]\n    var range = splt[1].substring(0, 3)\n    var typeIsNumber = /\\d+/.test(type)\n    var ago = splt[2] === 'ago'\n    var num = (type === 'last' ? -1 : 1) * (ago ? -1 : 1)\n\n    if (typeIsNumber) {\n      num *= parseInt(type, 10)\n    }\n\n    if (ranges.hasOwnProperty(range) && !splt[1].match(/^mon(day|\\.)?$/i)) {\n      return date['set' + ranges[range]](date['get' + ranges[range]]() + num)\n    }\n\n    if (range === 'wee') {\n      return date.setDate(date.getDate() + (num * 7))\n    }\n\n    if (type === 'next' || type === 'last') {\n      lastNext(type, range, num)\n    } else if (!typeIsNumber) {\n      return false\n    }\n\n    return true\n  }\n\n  times = '(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec' +\n    '|sunday|sun\\\\.?|monday|mon\\\\.?|tuesday|tue\\\\.?|wednesday|wed\\\\.?' +\n    '|thursday|thu\\\\.?|friday|fri\\\\.?|saturday|sat\\\\.?)'\n  regex = '([+-]?\\\\d+\\\\s' + times + '|' + '(last|next)\\\\s' + times + ')(\\\\sago)?'\n\n  match = text.match(new RegExp(regex, 'gi'))\n  if (!match) {\n    return fail\n  }\n\n  for (i = 0, len = match.length; i < len; i++) {\n    if (!process(match[i])) {\n      return fail\n    }\n  }\n\n  return (date.getTime() / 1000)\n}\n"]}