63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
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;
|
|
}
|