zapishis-client/packages/graphql/utils/datetime-format.ts
2025-05-16 15:12:18 +03:00

52 lines
1.4 KiB
TypeScript

/* eslint-disable import/no-unassigned-import */
import dayjs from 'dayjs';
import 'dayjs/locale/ru';
export function combineDateTime(date: Date, time: string) {
const [hours = '00', minutes = '00'] = time.split(':');
return new Date(
date.getFullYear(),
date.getMonth(),
date.getDate(),
Number.parseInt(hours, 10),
Number.parseInt(minutes, 10),
);
}
export function formatDate(date: Date | string) {
return {
db: () => dayjs(date).format('YYYY-MM-DD'),
user: () => {
const lang = document.documentElement.lang || 'ru';
dayjs.locale(lang);
return dayjs(date).format('D MMMM YYYY');
},
};
}
export function formatTime(time: string) {
const [hours = '00', minutes = '00'] = time.split(':');
return {
db: () => `${hours}:${minutes}:00`,
user: () => `${hours}:${minutes}`,
};
}
export function sumTime(time1: string, time2: string) {
const [hours1 = '00', minutes1 = '00'] = time1.split(':');
const [hours2 = '00', minutes2 = '00'] = time2.split(':');
let totalMinutes = Number.parseInt(minutes1, 10) + Number.parseInt(minutes2, 10);
let totalHours = Number.parseInt(hours1, 10) + Number.parseInt(hours2, 10);
totalHours += Math.floor(totalMinutes / 60);
totalMinutes %= 60;
const paddedHours = totalHours.toString().padStart(2, '0');
const paddedMinutes = totalMinutes.toString().padStart(2, '0');
return `${paddedHours}:${paddedMinutes}`;
}