{"version":3,"sources":["../../../packages/core/base/date/date-time.ts"],"names":[],"mappings":"AAAA,yBAAiB,QAAQ,CAAC;IACf,MAAM,uBAAuB;;;;KAInC,CAAC;IACF,SAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,QAW7C;IACD,SAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,QAW7C;IAED,SAAgB,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAUnD;IAED,SAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAYxD;IAED,SAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAcxD;IAED,SAAgB,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAe/D;IAED,SAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAiB3D;IAED,SAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAiB3D;IAED,SAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE5C;IAED,SAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,GAAE,OAAe,EAAE,mBAAmB,GAAE,OAAe,GAAG,IAAI,CAQnH;IAED,SAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;IAED,SAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3E;IAED,SAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxE;IAED,SAAgB,yBAAyB,CAAC,QAAQ,KAAA,UA2BjD;CACJ","file":"date-time.d.ts","sourcesContent":["export namespace DateTime {\r\n    export const DateTimeFormatCharacter = {\r\n        Year: 'y',\r\n        Month: 'M',\r\n        Day: 'd'\r\n    };\r\n    export function copyDate(src: Date, dest: Date) {\r\n        const date = new Date(\r\n            src.getFullYear(),\r\n            src.getMonth(),\r\n            src.getDate(),\r\n            dest.getHours(),\r\n            dest.getMinutes(),\r\n            dest.getSeconds(),\r\n            dest.getMilliseconds()\r\n        );\r\n        dest.setTime(date.getTime());\r\n    }\r\n    export function copyTime(src: Date, dest: Date) {\r\n        const date = new Date(\r\n            dest.getFullYear(),\r\n            dest.getMonth(),\r\n            dest.getDate(),\r\n            src.getHours(),\r\n            src.getMinutes(),\r\n            src.getSeconds(),\r\n            src.getMilliseconds()\r\n        );\r\n        dest.setTime(date.getTime());\r\n    }\r\n\r\n    export function isEqual(d1: Date, d2: Date): boolean {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return true;\r\n        }\r\n        if (d1IsNull !== d2IsNull) {\r\n            return false;\r\n        }\r\n        return d1.getTime() === d2.getTime();\r\n    }\r\n\r\n    export function isEqualDates(d1: Date, d2: Date): boolean {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return true;\r\n        }\r\n        if (d1IsNull !== d2IsNull) {\r\n            return false;\r\n        }\r\n        return d1.getFullYear() === d2.getFullYear()\r\n            && d1.getMonth() === d2.getMonth()\r\n            && d1.getDate() === d2.getDate();\r\n    }\r\n\r\n    export function isEqualTimes(d1: Date, d2: Date): boolean {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return true;\r\n        }\r\n        if (d1IsNull !== d2IsNull) {\r\n            return false;\r\n        }\r\n        return d1.getHours() === d2.getHours()\r\n            && d1.getMinutes() === d2.getMinutes()\r\n            && d1.getSeconds() === d2.getSeconds()\r\n            && d1.getUTCMilliseconds() === d2.getUTCMilliseconds();\r\n    }\r\n\r\n    export function compareDateTimes(d1: Date, d2: Date): 1 | 0 | -1 {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return 0;\r\n        }\r\n        if (d1IsNull && !d2IsNull) {\r\n            return -1;\r\n        }\r\n        if (!d1IsNull && d2IsNull) {\r\n            return 1;\r\n        }\r\n\r\n        return d1 > d2 ? 1 : d1 < d2 ? -1 : 0;\r\n    }\r\n\r\n    export function compareDates(d1: Date, d2: Date): 1 | 0 | -1 {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return 0;\r\n        }\r\n        if (d1IsNull && !d2IsNull) {\r\n            return -1;\r\n        }\r\n        if (!d1IsNull && d2IsNull) {\r\n            return 1;\r\n        }\r\n\r\n        const d1DateOnly = DateTime.getDateOnly(d1);\r\n        const d2DateOnly = DateTime.getDateOnly(d2);\r\n        return DateTime.compareDateTimes(d1DateOnly, d2DateOnly);\r\n    }\r\n\r\n    export function compareTimes(d1: Date, d2: Date): 1 | 0 | -1 {\r\n        const d1IsNull = MsftSme.isNullOrUndefined(d1);\r\n        const d2IsNull = MsftSme.isNullOrUndefined(d2);\r\n\r\n        if (d1 === d2 || (d1IsNull && d2IsNull)) {\r\n            return 0;\r\n        }\r\n        if (d1IsNull && !d2IsNull) {\r\n            return -1;\r\n        }\r\n        if (!d1IsNull && d2IsNull) {\r\n            return 1;\r\n        }\r\n\r\n        const d1TimeOnly = DateTime.getTimeOnly(d1);\r\n        const d2TimeOnly = DateTime.getTimeOnly(d2);\r\n        return DateTime.compareDateTimes(d1TimeOnly, d2TimeOnly);\r\n    }\r\n\r\n    export function getDateOnly(date: Date): Date {\r\n        return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n    }\r\n\r\n    export function getTimeOnly(date: Date, includeSeconds: boolean = false, includeMilliseconds: boolean = false): Date {\r\n        if (includeMilliseconds) {\r\n            return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n        } else if (includeSeconds) {\r\n            return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), 0);\r\n        } else {\r\n            return new Date(0, 0, 0, date.getHours(), date.getMinutes(), 0, 0);\r\n        }\r\n    }\r\n\r\n    export function getLastDayOfMonth(year: number, month: number): Date {\r\n        return new Date(year, month + 1, 0);\r\n    }\r\n\r\n    export function getLastDayOfPreviousMonth(year: number, month: number): Date {\r\n        const date = new Date(year, month, 1);\r\n        date.setDate(date.getDate() - 1);\r\n        return date;\r\n    }\r\n\r\n    export function getFirstDayOfNextMonth(year: number, month: number): Date {\r\n        const date = new Date(year, month, this.getLastDayOfMonth(year, month).getDate());\r\n        date.setDate(date.getDate() + 1);\r\n        return date;\r\n    }\r\n\r\n    export function getLocaleDateStringFormat(localeId) {\r\n        enum FormatPartType {\r\n            Day = 'day',\r\n            Month = 'month',\r\n            Year = 'year',\r\n            Literal = 'literal'\r\n        }\r\n        let dateFormat = '';\r\n        const formatter = new Intl.DateTimeFormat(localeId);\r\n        const sampleDate = new Date('2/2/2020');\r\n        const parts = formatter.formatToParts(sampleDate);\r\n        for (const part of parts) {\r\n            switch (part.type) {\r\n                case FormatPartType.Literal:\r\n                    dateFormat += part.value;\r\n                    break;\r\n                case FormatPartType.Day:\r\n                    dateFormat += DateTimeFormatCharacter.Day.repeat(part.value.length);\r\n                    break;\r\n                case FormatPartType.Month:\r\n                    dateFormat += DateTimeFormatCharacter.Month.repeat(part.value.length);\r\n                    break;\r\n                case FormatPartType.Year:\r\n                    dateFormat += DateTimeFormatCharacter.Year.repeat(part.value.length);\r\n            }\r\n        }\r\n        return dateFormat;\r\n    }\r\n}\r\n"]}