{"version":3,"sources":["../src/dateTimeStr.ts"],"sourcesContent":["export type AnyDateTime = number | Date | string;\n\nfunction isAllDigits(str: string): boolean {\n  return /^\\d+$/.test(str);\n}\n\n/**\n * Convert a number (epoch seconds or milliseconds), string (parseable\n * date/time or epoch seconds or milliseconds), or Date object (no conversion)\n * into a Date object.\n */\nexport function toDate(ts: AnyDateTime): Date {\n  if (typeof ts === \"number\") {\n    // Handle timestamp in seconds (less than 12 digits long).\n    if (ts < 1_000_000_000_00) {\n      return new Date(ts * 1000);\n    }\n\n    // Handle timestamp in milliseconds.\n    return new Date(ts);\n  }\n\n  if (typeof ts === \"string\") {\n    if (isAllDigits(ts)) {\n      return toDate(Number(ts));\n    }\n\n    return new Date(ts);\n  }\n\n  return ts;\n}\n\n/**\n * Returns a date in yyyy-MM format. E.g. '2000-01'.\n *\n * @param dt Specify a date object or default to the current date.\n * @param separator Defaults to '-'.\n */\nexport function yyyyMm(dt = new Date(), separator = \"-\"): string {\n  const yr = dt.getFullYear();\n  const mth = dt.getMonth() + 1;\n\n  return yr + separator + (mth < 10 ? \"0\" + mth : mth);\n}\n\n/**\n * Returns a date in yyyy-MM-dd format. E.g. '2000-01-02'.\n *\n * @param dt Specify a date object or default to the current date.\n * @param separator Defaults to '-'.\n */\nexport function yyyyMmDd(dt = new Date(), separator = \"-\"): string {\n  const day = dt.getDate();\n\n  return yyyyMm(dt, separator) + separator + (day < 10 ? \"0\" + day : day);\n}\n\n/**\n * Returns a date in hh:mm format. E.g. '01:02'.\n *\n * @param dt Specify a date object or default to the current date/time.\n * @param separator Defaults to ':'.\n */\nexport function hhMm(dt = new Date(), separator = \":\"): string {\n  const hr = dt.getHours();\n  const min = dt.getMinutes();\n\n  return (hr < 10 ? \"0\" + hr : hr) + separator + (min < 10 ? \"0\" + min : min);\n}\n\n/**\n * Returns a date in hh:mm:ss format. E.g. '01:02:03'.\n *\n * @param dt Specify a date object or default to the current date/time.\n * @param separator Defaults to ':'.\n */\nexport function hhMmSs(dt = new Date(), separator = \":\"): string {\n  const sec = dt.getSeconds();\n\n  return hhMm(dt, separator) + separator + (sec < 10 ? \"0\" + sec : sec);\n}\n\n/**\n * Returns a date in hh:mm:ss.SSS format. E.g. '01:02:03.004'.\n *\n * @param dt Specify a date object or default to the current date/time.\n * @param timeSeparator Separator for hh/mm/ss. Defaults to ':'.\n * @param msSeparator Separator before SSS. Defaults to '.'.\n */\nexport function hhMmSsMs(\n  dt = new Date(),\n  timeSeparator = \":\",\n  msSeparator = \".\",\n): string {\n  const ms = dt.getMilliseconds();\n\n  return (\n    hhMmSs(dt, timeSeparator) +\n    msSeparator +\n    (ms < 10 ? \"00\" + ms : ms < 100 ? \"0\" + ms : ms)\n  );\n}\n\n/**\n * Returns the timezone string for the given date. E.g. '+8', '-3.5'.\n * Returns 'Z' for UTC.\n *\n * @param dt Specify a date object or default to the current date/time.\n */\nexport function tzShort(dt = new Date()): string {\n  if (dt.getTimezoneOffset() === 0) {\n    return \"Z\";\n  }\n\n  const tzHours = dt.getTimezoneOffset() / 60;\n  return tzHours >= 0 ? \"+\" + tzHours : String(tzHours);\n}\n\n/**\n * Returns the long month name, zero-indexed. E.g. 0 for 'January'.\n *\n * @param month Zero-indexed month.\n * @param locales Specify the locale, e.g. 'en-US', new Intl.Locale(\"en-US\").\n */\nexport function getLongMonthNameZeroIndexed(\n  month: number,\n  locales: Intl.LocalesArgument = \"default\",\n): string {\n  return new Date(2024, month, 15).toLocaleString(locales, {\n    month: \"long\",\n  });\n}\n\n/**\n * Returns the long month name, one-indexed. E.g. 1 for 'January'.\n *\n * @param month One-indexed month.\n * @param locales Specify the locale, e.g. 'en-US', new Intl.Locale(\"en-US\").\n */\nexport function getLongMonthNameOneIndexed(\n  month: number,\n  locales: Intl.LocalesArgument = \"default\",\n): string {\n  return getLongMonthNameZeroIndexed(month - 1, locales);\n}\n\n/**\n * Returns the short month name, zero-indexed. E.g. 0 for 'Jan'.\n *\n * @param month Zero-indexed month.\n * @param locales Specify the locale, e.g. 'en-US', new Intl.Locale(\"en-US\").\n */\nexport function getShortMonthNameZeroIndexed(\n  month: number,\n  locales: Intl.LocalesArgument = \"default\",\n): string {\n  return new Date(2000, month, 15).toLocaleString(locales, {\n    month: \"short\",\n  });\n}\n\n/**\n * Returns the short month name, one-indexed. E.g. 1 for 'Jan'.\n *\n * @param month One-indexed month.\n * @param locales Specify the locale, e.g. 'en-US', new Intl.Locale(\"en-US\").\n */\nexport function getShortMonthNameOneIndexed(\n  month: number,\n  locales: Intl.LocalesArgument = \"default\",\n): string {\n  return getShortMonthNameZeroIndexed(month - 1, locales);\n}\n\n/**\n * Returns a human-readable string date/time like '2025-01-01 22:31:16Z'.\n * Excludes the milliseconds assuming it is not necessary for display.\n */\nexport function getDisplayDateTime(ts: AnyDateTime) {\n  const iso = toDate(ts).toISOString();\n  const noMs = iso.slice(0, 19) + \"Z\";\n  return noMs.replace(\"T\", \" \");\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,+BAAAC,EAAA,gCAAAC,EAAA,gCAAAC,EAAA,iCAAAC,EAAA,SAAAC,EAAA,WAAAC,EAAA,aAAAC,EAAA,WAAAC,EAAA,YAAAC,EAAA,WAAAC,EAAA,aAAAC,IAAA,eAAAC,EAAAd,GAEA,SAASe,EAAYC,EAAsB,CACzC,MAAO,QAAQ,KAAKA,CAAG,CACzB,CAOO,SAASN,EAAOO,EAAuB,CAC5C,OAAI,OAAOA,GAAO,SAEZA,EAAK,KACA,IAAI,KAAKA,EAAK,GAAI,EAIpB,IAAI,KAAKA,CAAE,EAGhB,OAAOA,GAAO,SACZF,EAAYE,CAAE,EACTP,EAAO,OAAOO,CAAE,CAAC,EAGnB,IAAI,KAAKA,CAAE,EAGbA,CACT,CAQO,SAASL,EAAOM,EAAK,IAAI,KAAQC,EAAY,IAAa,CAC/D,IAAMC,EAAKF,EAAG,YAAY,EACpBG,EAAMH,EAAG,SAAS,EAAI,EAE5B,OAAOE,EAAKD,GAAaE,EAAM,GAAK,IAAMA,EAAMA,EAClD,CAQO,SAASR,EAASK,EAAK,IAAI,KAAQC,EAAY,IAAa,CACjE,IAAMG,EAAMJ,EAAG,QAAQ,EAEvB,OAAON,EAAOM,EAAIC,CAAS,EAAIA,GAAaG,EAAM,GAAK,IAAMA,EAAMA,EACrE,CAQO,SAASf,EAAKW,EAAK,IAAI,KAAQC,EAAY,IAAa,CAC7D,IAAMI,EAAKL,EAAG,SAAS,EACjBM,EAAMN,EAAG,WAAW,EAE1B,OAAQK,EAAK,GAAK,IAAMA,EAAKA,GAAMJ,GAAaK,EAAM,GAAK,IAAMA,EAAMA,EACzE,CAQO,SAAShB,EAAOU,EAAK,IAAI,KAAQC,EAAY,IAAa,CAC/D,IAAMM,EAAMP,EAAG,WAAW,EAE1B,OAAOX,EAAKW,EAAIC,CAAS,EAAIA,GAAaM,EAAM,GAAK,IAAMA,EAAMA,EACnE,CASO,SAAShB,EACdS,EAAK,IAAI,KACTQ,EAAgB,IAChBC,EAAc,IACN,CACR,IAAMC,EAAKV,EAAG,gBAAgB,EAE9B,OACEV,EAAOU,EAAIQ,CAAa,EACxBC,GACCC,EAAK,GAAK,KAAOA,EAAKA,EAAK,IAAM,IAAMA,EAAKA,EAEjD,CAQO,SAASjB,EAAQO,EAAK,IAAI,KAAgB,CAC/C,GAAIA,EAAG,kBAAkB,IAAM,EAC7B,MAAO,IAGT,IAAMW,EAAUX,EAAG,kBAAkB,EAAI,GACzC,OAAOW,GAAW,EAAI,IAAMA,EAAU,OAAOA,CAAO,CACtD,CAQO,SAASzB,EACd0B,EACAC,EAAgC,UACxB,CACR,OAAO,IAAI,KAAK,KAAMD,EAAO,EAAE,EAAE,eAAeC,EAAS,CACvD,MAAO,MACT,CAAC,CACH,CAQO,SAAS5B,EACd2B,EACAC,EAAgC,UACxB,CACR,OAAO3B,EAA4B0B,EAAQ,EAAGC,CAAO,CACvD,CAQO,SAASzB,EACdwB,EACAC,EAAgC,UACxB,CACR,OAAO,IAAI,KAAK,IAAMD,EAAO,EAAE,EAAE,eAAeC,EAAS,CACvD,MAAO,OACT,CAAC,CACH,CAQO,SAAS1B,EACdyB,EACAC,EAAgC,UACxB,CACR,OAAOzB,EAA6BwB,EAAQ,EAAGC,CAAO,CACxD,CAMO,SAAS7B,EAAmBe,EAAiB,CAGlD,OAFYP,EAAOO,CAAE,EAAE,YAAY,EAClB,MAAM,EAAG,EAAE,EAAI,KACpB,QAAQ,IAAK,GAAG,CAC9B","names":["dateTimeStr_exports","__export","getDisplayDateTime","getLongMonthNameOneIndexed","getLongMonthNameZeroIndexed","getShortMonthNameOneIndexed","getShortMonthNameZeroIndexed","hhMm","hhMmSs","hhMmSsMs","toDate","tzShort","yyyyMm","yyyyMmDd","__toCommonJS","isAllDigits","str","ts","dt","separator","yr","mth","day","hr","min","sec","timeSeparator","msSeparator","ms","tzHours","month","locales"]}