333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/util/DateUtils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IAAA;IAsNA,CAAC;IApNG,4EAA4E;IAC5E,wBAAwB;IACxB,4EAA4E;IAE5E;;OAEG;IACI,+BAAqB,GAA5B,UAA6B,SAAgC;QACzD,IAAI,CAAC,SAAS;YACV,OAAO,SAAS,CAAC;QAErB,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAiB,CAAC;IACnF,CAAC;IAED;;OAEG;IACI,+BAAqB,GAA5B,UAA6B,KAAe;QACxC,IAAI,KAAK,YAAY,IAAI;YACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAElK,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,yBAAe,GAAtB,UAAuB,SAAsB,EAAE,KAAsB,EAAE,eAAsB;QAA9C,sBAAA,EAAA,aAAsB;QAAE,gCAAA,EAAA,sBAAsB;QACzF,IAAI,IAAI,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,IAAI,KAAK;YACL,IAAI,GAAG,IAAI,IAAI,CACX,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,kBAAkB,EAAE,CAC5B,CAAC;QAEN,IAAI,CAAC,eAAe;YAChB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,+BAAqB,GAA5B,UAA6B,KAAe,EAAE,WAA4B;QAA5B,4BAAA,EAAA,mBAA4B;QACtE,IAAI,KAAK,YAAY,IAAI;YACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC7C,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAClD,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEjF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,yBAAe,GAAtB,UAAuB,KAAe;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACrB,IAAA,wCAA4C,EAA3C,aAAK,EAAE,eAAO,EAAE,eAA2B,CAAC;YACnD,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,KAAK;gBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO;gBACP,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,IAAI,OAAO;gBACP,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,2BAAiB,GAAxB,UAAyB,KAAiB,EAAE,WAA4B;QAA5B,4BAAA,EAAA,mBAA4B;QACpE,KAAK,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;iBAClB,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAA5B,CAA4B,CAAC,CAAC,+DAA+D;iBACtG,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,mCAAyB,GAAhC,UAAiC,KAAe;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,IAAI,KAAK,YAAY,IAAI,EAAE;YACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG;gBACtD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;gBACpD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG;gBAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG;gBAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG;gBAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG;gBAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;SACxD;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,sCAA4B,GAAnC,UAAoC,KAAe;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,IAAI,KAAK,YAAY,IAAI,EAAE;YACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,GAAG;gBACzD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;gBACvD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG;gBAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG;gBACnD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,GAAG;gBACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,GAAG;gBACrD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;SAC3D;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,6BAAmB,GAA1B,UAA2B,KAAgB;QACvC,IAAI,KAAK,YAAY,KAAK,EAAE;YACxB,OAAQ,KAAe;iBAClB,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC;iBACnB,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,6BAAmB,GAA1B,UAA2B,KAAiB;QACxC,IAAI,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC3B;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,4BAAkB,GAAzB,UAA0B,KAAU;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,4BAAkB,GAAzB,UAA0B,KAAU;QAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAEM,4BAAkB,GAAzB,UAA0B,KAAU;QAChC,OAAO,EAAE,GAAG,KAAK,CAAC;IACtB,CAAC;IAEM,4BAAkB,GAAzB,UAA0B,KAAU,EAAE,cAA8B;QAChE,IACI,cAAc,CAAC,IAAI;eAChB,CAAC,KAAK,CAAC,KAAK,CAAC;eACb,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EACtD;YACE,4DAA4D;YAC5D,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;OAEG;IACY,6BAAmB,GAAlC,UAAmC,KAAa;QAC5C,IAAI,KAAK,GAAG,EAAE;YACV,OAAO,GAAG,GAAG,KAAK,CAAC;QAEvB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACY,4BAAkB,GAAjC,UAAkC,KAAa;QAC3C,IAAI,KAAK,GAAG,EAAE,EAAE;YACZ,OAAO,IAAI,GAAG,KAAK,CAAC;SACvB;aAAM,IAAI,KAAK,GAAG,GAAG,EAAE;YACpB,OAAO,GAAG,GAAG,KAAK,CAAC;SACtB;aAAM;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;SACxB;IACL,CAAC;IAEL,gBAAC;AAAD,CAtNA,AAsNC,IAAA;AAtNY,8BAAS","file":"DateUtils.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\";\n\n/**\n * Provides utilities to transform hydrated and persisted data.\n */\nexport class DateUtils {\n\n    // -------------------------------------------------------------------------\n    // Public Static Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Normalizes date object hydrated from the database.\n     */\n    static normalizeHydratedDate(mixedDate: Date|string|undefined): Date|string|undefined {\n        if (!mixedDate)\n            return mixedDate;\n\n        return typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate as Date;\n    }\n\n    /**\n     * Converts given value into date string in a \"YYYY-MM-DD\" format.\n     */\n    static mixedDateToDateString(value: Date|any): string|any {\n        if (value instanceof Date)\n            return this.formatZerolessValue(value.getFullYear()) + \"-\" + this.formatZerolessValue(value.getMonth() + 1) + \"-\" + this.formatZerolessValue(value.getDate());\n\n        return value;\n    }\n\n    /**\n     * Converts given value into date object.\n     */\n    static mixedDateToDate(mixedDate: Date|string, toUtc: boolean = false, useMilliseconds = true): Date {\n        let date = typeof mixedDate === \"string\" ? new Date(mixedDate) : mixedDate;\n\n        if (toUtc)\n            date = new Date(\n                date.getUTCFullYear(),\n                date.getUTCMonth(),\n                date.getUTCDate(),\n                date.getUTCHours(),\n                date.getUTCMinutes(),\n                date.getUTCSeconds(),\n                date.getUTCMilliseconds()\n            );\n\n        if (!useMilliseconds)\n            date.setUTCMilliseconds(0);\n\n        return date;\n    }\n\n    /**\n     * Converts given value into time string in a \"HH:mm:ss\" format.\n     */\n    static mixedDateToTimeString(value: Date|any, skipSeconds: boolean = false): string|any {\n        if (value instanceof Date)\n            return this.formatZerolessValue(value.getHours()) +\n                \":\" + this.formatZerolessValue(value.getMinutes()) +\n                (!skipSeconds ? \":\" + this.formatZerolessValue(value.getSeconds()) : \"\");\n\n        return value;\n    }\n\n    /**\n     * Converts given value into time string in a \"HH:mm:ss\" format.\n     */\n    static mixedTimeToDate(value: Date|any): string|any {\n        if (typeof value === \"string\") {\n            const [hours, minutes, seconds] = value.split(\":\");\n            const date = new Date();\n            if (hours)\n                date.setHours(parseInt(hours));\n            if (minutes)\n                date.setMinutes(parseInt(minutes));\n            if (seconds)\n                date.setSeconds(parseInt(seconds));\n            return date;\n        }\n\n        return value;\n    }\n\n    /**\n     * Converts given string value with \"-\" separator into a \"HH:mm:ss\" format.\n     */\n    static mixedTimeToString(value: string|any, skipSeconds: boolean = false): string|any {\n        value = value instanceof Date ? (value.getHours() + \":\" + value.getMinutes() + (!skipSeconds ? \":\" + value.getSeconds() : \"\")) : value;\n        if (typeof value === \"string\") {\n            return value.split(\":\")\n                .map(v => v.length === 1 ? \"0\" + v : v) // append zero at beginning if we have a first-zero-less number\n                .join(\":\");\n        }\n\n        return value;\n    }\n\n    /**\n     * Converts given value into datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n     */\n    static mixedDateToDatetimeString(value: Date|any): string|any {\n        if (typeof value === \"string\") {\n            value = new Date(value);\n        }\n        if (value instanceof Date) {\n            return this.formatZerolessValue(value.getFullYear()) + \"-\" +\n                this.formatZerolessValue(value.getMonth() + 1) + \"-\" +\n                this.formatZerolessValue(value.getDate()) + \" \" +\n                this.formatZerolessValue(value.getHours()) + \":\" +\n                this.formatZerolessValue(value.getMinutes()) + \":\" +\n                this.formatZerolessValue(value.getSeconds()) + \".\" +\n                this.formatMilliseconds(value.getMilliseconds());\n        }\n\n        return value;\n    }\n\n    /**\n     * Converts given value into utc datetime string in a \"YYYY-MM-DD HH-mm-ss\" format.\n     */\n    static mixedDateToUtcDatetimeString(value: Date|any): string|any {\n        if (typeof value === \"string\") {\n            value = new Date(value);\n        }\n        if (value instanceof Date) {\n            return this.formatZerolessValue(value.getUTCFullYear()) + \"-\" +\n                this.formatZerolessValue(value.getUTCMonth() + 1) + \"-\" +\n                this.formatZerolessValue(value.getUTCDate()) + \" \" +\n                this.formatZerolessValue(value.getUTCHours()) + \":\" +\n                this.formatZerolessValue(value.getUTCMinutes()) + \":\" +\n                this.formatZerolessValue(value.getUTCSeconds()) + \".\" +\n                this.formatMilliseconds(value.getUTCMilliseconds());\n        }\n\n        return value;\n    }\n\n    /**\n     * Converts each item in the given array to string joined by \",\" separator.\n     */\n    static simpleArrayToString(value: any[]|any): string[]|any {\n        if (value instanceof Array) {\n            return (value as any[])\n                .map(i => String(i))\n                .join(\",\");\n        }\n\n        return value;\n    }\n\n    /**\n     * Converts given string to simple array split by \",\" separator.\n     */\n    static stringToSimpleArray(value: string|any): string|any {\n        if (value instanceof String || typeof value === \"string\") {\n            if (value.length > 0) {\n                return value.split(\",\");\n            } else {\n                return [];\n            }\n        }\n\n        return value;\n    }\n\n    static simpleJsonToString(value: any): string {\n        return JSON.stringify(value);\n    }\n\n    static stringToSimpleJson(value: any) {\n        return typeof value === \"string\" ? JSON.parse(value) : value;\n    }\n\n    static simpleEnumToString(value: any) {\n        return \"\" + value;\n    }\n\n    static stringToSimpleEnum(value: any, columnMetadata: ColumnMetadata) {\n        if (\n            columnMetadata.enum\n            && !isNaN(value)\n            && columnMetadata.enum.indexOf(parseInt(value)) >= 0\n        ) {\n            // convert to number if that exists in poosible enum options\n            value = parseInt(value);\n        }\n\n        return value;\n    }\n\n    // -------------------------------------------------------------------------\n    // Private Static Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n     */\n    private static formatZerolessValue(value: number): string {\n        if (value < 10)\n            return \"0\" + value;\n\n        return String(value);\n    }\n\n    /**\n     * Formats given number to \"0x\" format, e.g. if it is 1 then it will return \"01\".\n     */\n    private static formatMilliseconds(value: number): string {\n        if (value < 10) {\n            return \"00\" + value;\n        } else if (value < 100) {\n            return \"0\" + value;\n        } else {\n            return String(value);\n        }\n    }\n\n}\n"],"sourceRoot":".."}