import { TrUtils } from './tr-utils'; import setMonth from 'date-fns/setMonth'; import format from 'date-fns/format'; import getYear from 'date-fns/getYear'; import differenceInDays from 'date-fns/differenceInDays'; import { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz'; export class MyDate { static GetDateTimeNowInUTC(UserTimeZone:any) { const utcDate = utcToZonedTime(new Date(), UserTimeZone); return zonedTimeToUtc(utcDate, UserTimeZone); } static GetCurrentYear(UserTimeZone: any) { const utcDate: any = zonedTimeToUtc(new Date(), UserTimeZone); return getYear(utcDate); } static ConvertUTCDateToReadable(UTCDateTime: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } let Month: any = format(new Date(UTCDateTime), 'MMM'); let Day: any = format(new Date(UTCDateTime), 'dd'); let Year: any = format(new Date(UTCDateTime), 'yyyy'); return Day + '-' + Month + '-' + Year; } static ConvertUTCDateToReadableExDate(UTCDateTime: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } let Month: any = format(new Date(UTCDateTime), 'MM'); let Year: any = format(new Date(UTCDateTime), 'yy'); return Month + '/' + Year; } static ConvertUTCDateToReadableExDateTxt(UTCDateTime: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } let Month: any = format(new Date(UTCDateTime), 'MMM'); let Year: any = format(new Date(UTCDateTime), 'yy'); return Month + '/' + Year; } static ConvertUTCDateTimeToReadable(UTCDateTime: any, UserTimeZone: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } const utcDate: any = utcToZonedTime(new Date(UTCDateTime), UserTimeZone); let Month: any = format(new Date(utcDate), 'MMM'); let Day: any = format(new Date(utcDate), 'dd'); let Year: any = format(new Date(utcDate), 'yyyy'); let hours: any = format(new Date(utcDate), 'hh'); let minutes: any = format(new Date(utcDate), 'mm'); let ampm: any = format(new Date(utcDate), 'a'); let strTime: any = hours + ':' + minutes + ' ' + ampm; return Day + '-' + Month + '-' + Year + ', ' + strTime; } static GetMonthName(MonthNumber: number, UserTimeZone: any) { let utcDate: any = this.GetDateTimeNowInUTC(UserTimeZone); utcDate=setMonth(utcDate,(MonthNumber-1)); let MonthName: any = format(new Date(utcDate), 'MMMM'); return MonthName; } static GetDaysDiffBetween(startutcdate: any, endutcdate: any) { if (TrUtils.IsEmpty(startutcdate) || TrUtils.IsEmpty(endutcdate)) { return 0; } return differenceInDays(new Date(endutcdate), new Date(startutcdate)); } static GetWeekDateAndTime(UTCDateTime: any, UserTimeZone: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } const utcDate: any = utcToZonedTime(new Date(UTCDateTime), UserTimeZone); var year: any = getYear(utcDate); if (year === this.GetCurrentYear(UserTimeZone)) { return format(new Date(utcDate), 'E, MMM do, h:mm a'); } else { return this.ConvertUTCDateTimeToReadable(UTCDateTime, UserTimeZone); } } static GetWeekAndDate(UTCDateTime: any, UserTimeZone: any) { if (TrUtils.IsEmpty(UTCDateTime)) { return null; } const utcDate: any = zonedTimeToUtc(utcToZonedTime(new Date(UTCDateTime), UserTimeZone), UserTimeZone); var year: any = getYear(utcDate); if (year === this.GetCurrentYear(UserTimeZone)) { return format(new Date(utcDate), 'E, MMM do'); } else { return this.ConvertUTCDateToReadable(UTCDateTime); } } }