ente/web/packages/shared/time/index.ts
Manav Rathi 38fe3f5300
Types
2024-04-25 16:54:49 +05:30

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;
}