index.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. export interface TimeDelta {
  2. hours?: number;
  3. days?: number;
  4. months?: number;
  5. years?: number;
  6. }
  7. export function getUnixTimeInMicroSecondsWithDelta(delta: TimeDelta): number {
  8. let currentDate = new Date();
  9. if (delta?.hours) {
  10. currentDate = _addHours(currentDate, delta.hours);
  11. }
  12. if (delta?.days) {
  13. currentDate = _addDays(currentDate, delta.days);
  14. }
  15. if (delta?.months) {
  16. currentDate = _addMonth(currentDate, delta.months);
  17. }
  18. if (delta?.years) {
  19. currentDate = _addYears(currentDate, delta.years);
  20. }
  21. return currentDate.getTime() * 1000;
  22. }
  23. export function validateAndGetCreationUnixTimeInMicroSeconds(dateTime: Date) {
  24. if (!dateTime || isNaN(dateTime.getTime())) {
  25. return null;
  26. }
  27. const unixTime = dateTime.getTime() * 1000;
  28. //ignoring dateTimeString = "0000:00:00 00:00:00"
  29. if (unixTime === Date.UTC(0, 0, 0, 0, 0, 0, 0) || unixTime === 0) {
  30. return null;
  31. } else if (unixTime > Date.now() * 1000) {
  32. return null;
  33. } else {
  34. return unixTime;
  35. }
  36. }
  37. function _addDays(date: Date, days: number): Date {
  38. const result = new Date(date);
  39. result.setDate(date.getDate() + days);
  40. return result;
  41. }
  42. function _addHours(date: Date, hours: number): Date {
  43. const result = new Date(date);
  44. result.setHours(date.getHours() + hours);
  45. return result;
  46. }
  47. function _addMonth(date: Date, months: number) {
  48. const result = new Date(date);
  49. result.setMonth(date.getMonth() + months);
  50. return result;
  51. }
  52. function _addYears(date: Date, years: number) {
  53. const result = new Date(date);
  54. result.setFullYear(date.getFullYear() + years);
  55. return result;
  56. }