export interface TimeDelta { hours?: number; days?: number; months?: number; years?: number; } export function getUnixTimeInMicroSecondsWithDelta(delta: TimeDelta): number { let currentDate = new Date(); if (delta?.hours) { currentDate = _addHours(currentDate, delta.hours); } if (delta?.days) { currentDate = _addDays(currentDate, delta.days); } if (delta?.months) { currentDate = _addMonth(currentDate, delta.months); } if (delta?.years) { currentDate = _addYears(currentDate, delta.years); } return currentDate.getTime() * 1000; } export function validateAndGetCreationUnixTimeInMicroSeconds(dateTime: Date) { if (!dateTime || isNaN(dateTime.getTime())) { return null; } const unixTime = dateTime.getTime() * 1000; //ignoring dateTimeString = "0000:00:00 00:00:00" if (unixTime === Date.UTC(0, 0, 0, 0, 0, 0, 0) || unixTime === 0) { return null; } else if (unixTime > Date.now() * 1000) { return null; } else { return unixTime; } } function _addDays(date: Date, days: number): Date { const result = new Date(date); result.setDate(date.getDate() + days); return result; } function _addHours(date: Date, hours: number): Date { const result = new Date(date); result.setHours(date.getHours() + hours); return result; } function _addMonth(date: Date, months: number) { const result = new Date(date); result.setMonth(date.getMonth() + months); return result; } function _addYears(date: Date, years: number) { const result = new Date(date); result.setFullYear(date.getFullYear() + years); return result; }