|
| 1 | +--- |
| 2 | +title: formatDate |
| 3 | +tags: function,intermediate,date |
| 4 | +--- |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +Format date based on format staring, using regex match |
| 11 | + |
| 12 | +```ts |
| 13 | +const padLeft = (str: string | number, num: number = 2, fill = "0") => |
| 14 | + String(str).padStart(num, fill); |
| 15 | + |
| 16 | +const formatDate = (formatStr: string, date: Date | string) => { |
| 17 | + const d = new Date(date); |
| 18 | + const time: any = { |
| 19 | + YY: padLeft(d.getFullYear()).substr(2, 4), |
| 20 | + YYYY: padLeft(d.getFullYear()), |
| 21 | + MM: padLeft(d.getMonth() + 1), |
| 22 | + DD: padLeft(d.getDate()), |
| 23 | + hh: padLeft(d.getHours()), |
| 24 | + mm: padLeft(d.getMinutes()), |
| 25 | + ss: padLeft(d.getSeconds()), |
| 26 | + M: padLeft(d.getMilliseconds(), 3), |
| 27 | + }; |
| 28 | + return formatStr.replace( |
| 29 | + new RegExp(`${Object.keys(time).join("|")}`, "g"), |
| 30 | + (subStr: string) => { |
| 31 | + return time[subStr] || ""; |
| 32 | + } |
| 33 | + ); |
| 34 | +}; |
| 35 | +``` |
| 36 | + |
| 37 | +```ts |
| 38 | +const date = new Date(2020, 7, 22, 22, 22, 22, 222); |
| 39 | +formatDate("YYYY-DD-MM hh:mm:ss M", date); //"2020-22-08 22:22:22 222" |
| 40 | + |
| 41 | +const date2 = new Date(2020, 7, 9, 9, 9, 9, 99); |
| 42 | +formatDate("YYYY-DD-MM hh:mm:ss M", date2); // "2020-09-08 09:09:09 099" |
| 43 | +``` |
0 commit comments