{"version":3,"sources":["../src/misc/formatDateTime.ts"],"names":["dateDict","timeSlots","DefaultDateTimeFormat","getTimeSlot","hour","slotIndex","v","formatDateTime","value","format","options","opts","assignObject","date","Hour","hour12","Hour12","minute","second","millisecond","year","month","weekday","day","vars","result","k"],"mappings":"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","file":"chunk-ZQC2BLJ6.mjs","sourcesContent":["/**\r\n * \r\n * 只想简单地格式化时间和日期，不想引入dayjs\r\n * \r\n * \r\n *  格式化参数与dayjs一致\r\n* 根据模板格式化日期时间\r\n * \r\n\r\n    YY\t18\t年，两位数\r\n    YYYY\t2018\t年，四位数\r\n    M\t1-12\t月，从1开始\r\n    MM\t01-12\t月，两位数字\r\n    MMM\tJan-Dec\t月，英文缩写\r\n    D\t1-31\t日\r\n    DD\t01-31\t日，两位数\r\n    H\t0-23\t24小时\r\n    HH\t00-23\t24小时，两位数\r\n    h\t1-12\t12小时\r\n    hh\t01-12\t12小时，两位数\r\n    m\t0-59\t分钟\r\n    mm\t00-59\t分钟，两位数\r\n    s\t0-59\t秒\r\n    ss\t00-59\t秒，两位数\r\n    S\t0-9\t毫秒（百），一位数\r\n    SS\t00-99\t毫秒（十），两位数\r\n    SSS\t000-999\t毫秒，三位数\r\n    Z\t-05:00\tUTC偏移\r\n    ZZ\t-0500\tUTC偏移，两位数\r\n    A\tAM / PM\t上/下午，大写\r\n    a\tam / pm\t上/下午，小写\r\n    Do\t1st... 31st\t月份的日期与序号\r\n    t   小写时间段，如am,pm\r\n    T   大写时间段段，如上午、中午、下午\r\n\r\n*/\r\n\r\nimport { assignObject } from \"../object/assignObject\" \r\nimport \"../string/replaceAll\"\r\n\r\nexport interface FormatDateTimeOptions {\r\n    language?: 'cn' | 'en',\r\n} \r\n\r\nconst dateDict={\r\n    en:{\r\n        month:{\r\n            long        : [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n            short       : [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"],\r\n        },\r\n        weekday:{\r\n            long        : [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n            short       : [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\"],\r\n        }\r\n    },\r\n    cn:{\r\n        month:{\r\n            long:[\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\"],\r\n            short:[\"1月\",\"2月\",\"3月\",\"4月\",\"5月\",\"6月\",\"7月\",\"8月\",\"9月\",\"10月\",\"11月\",\"12月\"]\r\n        },\r\n        weekday:{\r\n            long        :[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],\r\n            short       : [\"周日\",\"周一\",\"周二\",\"周三\",\"周四\",\"周五\",\"周六\"]\r\n        }\r\n    }\r\n}\r\nconst timeSlots = {\r\n    en:{\r\n        slots  : [12],\r\n        names  : [\"AM\",\"PM\"]\r\n    },\r\n    cn: {\r\n        slots       : [6,9,11,13,18],\r\n        names  : [\"凌晨\",\"早上\",\"上午\",\"中午\",\"下午\",\"晚上\"]\r\n    }\r\n}  as any\r\n\r\nconst DefaultDateTimeFormat = \"YYYY-MM-DD HH:mm:ss\"\r\n/**\r\n * 获取一天中的时间段\r\n * @param {*} hour        小时，取值0-23\r\n * @param {*} options \r\n * @returns \r\n */\r\nfunction getTimeSlot(this:Required<FormatDateTimeOptions>,hour:number){\r\n    if(hour<0 && hour>23) hour = 0\r\n    const slots = [0,...timeSlots[this.language].slots,24]\r\n    let slotIndex = slots.findIndex(v=>v>hour) - 1 \r\n    return timeSlots[this.language].names[slotIndex]\r\n}\r\n\r\nexport function formatDateTime(value?: Date | number, format?: string,options?:FormatDateTimeOptions) {\r\n    const opts = assignObject({\r\n        language:'cn'\r\n    },options) as Required<FormatDateTimeOptions>\r\n    const date = value instanceof Date ? value : new Date(value || Date.now())\r\n    const hour = date.getHours(),Hour = String(hour).padStart(2, \"0\")\r\n    const hour12 =  hour > 12 ? hour - 12 : hour ,Hour12 = String(hour12).padStart(2, \"0\")\r\n    const minute = String(date.getMinutes())\r\n    const second = String(date.getSeconds())\r\n    const millisecond=String(date.getMilliseconds())    \r\n    const year =String(date.getFullYear()),month = date.getMonth(),weekday=date.getDay(),day=String(date.getDate())\r\n    let vars = [        \r\n        [\"HH\", Hour],                                                   // 00-23\t24小时，两位数\r\n        [\"H\", hour],                                                    // 0-23\t24小时\r\n        [\"hh\", Hour12],                                                 // 01-12\t12小时，两位数\r\n        [\"h\", hour12],                                                  // 1-12\t12小时\r\n        [\"mm\", minute.padStart(2, \"0\")],                                // 00-59\t分钟，两位数\r\n        [\"m\", minute],                                                  // 0-59\t分钟\r\n        [\"ss\", second.padStart(2, \"0\")],                                // 00-59\t秒，两位数\r\n        [\"s\", second],                                                  // 0-59\t秒\r\n        [\"SSS\", millisecond.padStart(3, \"0\")],                                           // 000-999\t毫秒，三位数\r\n        [\"A\",  hour > 12 ? \"PM\" : \"AM\"],                                // AM / PM\t上/下午，大写\r\n        [\"a\", hour > 12 ? \"pm\" : \"am\"],                                 // am / pm\t上/下午，小写\r\n        [\"t\",  getTimeSlot.call(opts,hour)],                           // 小写时间段，如上午、中午、下午\r\n        [\"T\",  getTimeSlot.call(opts,hour)],                           // 大写时间段，如上午、中午、下午\r\n        [\"YYYY\", year],                                                 // 2018\t年，四位数\r\n        [\"yyyy\", year],\r\n        [\"YY\", year.substring(2)],                                   // 18年，两位数        \r\n        [\"MMM\", dateDict[opts.language].month.short[month]],                         // Jan-Dec月，缩写\r\n        [\"MM\", String(month+1).padStart(2, \"0\")],                    // 01-12月，两位数字\r\n        [\"M\", month+1],                                              // 1-12\t月，从1开始\r\n        [\"DD\", day.padStart(2, \"0\")],                                // 01-31\t日，两位数\r\n        [\"D\", day],                                                  // 1-31\t日\r\n        [\"d\",weekday],                                               // 0-6\t一周中的一天，星期天是 0\r\n        [\"dd\",dateDict[opts.language].weekday.short[weekday]],       //\tSu-Sa\t最简写的星期几\r\n        [\"ddd\",dateDict[opts.language].weekday.short[weekday]],      //\tSun-Sat\t简写的星期几\r\n        [\"dddd\",dateDict[opts.language].weekday.long[weekday]],      //\tSunday-Saturday\t星期几，英文全称\r\n    ]    \r\n    let result = format || DefaultDateTimeFormat\r\n    vars.forEach(([k,v])=>result = result.replaceAll(k,v))\r\n    return result\r\n}"]}