Комментарии 7
Так и не понял, к чему все эти сложности. Получаем время с сервера в любой таймзоне и преобразуем её в текущую таймзону пользователя:
const time_iso = '2024-01-01T11:22Z'
const moment = new $mol_time_moment( time_iso )
const moment_local = moment.toOffset() // 2024-01-01T14:22+03:00
В этой статье я описал как конвертировать дату при передаче ее на фронт и эта конвертация происходит автоматически с помощью NestJS интерцептора.
Тайм зон мы не берем из браузера пользователя, ее он сам себе устанавливает в настройках профиля.
Зачем мне как пользователю бегать по всем сайтам и менять в настройках таймзону при переплете между городами, когда я могу сделать это один раз в операционной системе или даже ни одного - она может быть взята автоматически из мобильной сети?
Ну я сталкивался при разработке СРМ, с тем что люди хотят видеть конкретную таймзон, не важно что у них комп или телефон подтягивает таймзон из сети.
Хозяин бизнеса может дать доступы сотрудникам из разных регионов и с разными настройками времени и временных зон на их компьютерах, и чтобы не возникало путаницы, проще вообще игнорировать время компьютера клиента и отображать серверное время + таймзон который задал директор.
Куча кода - оно конечно интересно полистать. Но так и не понял, может пропустил, чем обоснован выбор хранения таймзоны в double/float?
private isValidStringDate(data: string | number | unknown) {
return typeof data === 'string' && data.length === '0000-00-00T00:00:00.000Z'.length && !isNaN(+new Date(data));
}
private isValidDate(data: string | number | Date | object | unknown) {
if (data && typeof data === 'object') {
return !isNaN(+data);
}
return typeof data === 'string' && !isNaN(+new Date(data));
}
Это вообще стра(ш/н)но выглядит.
переводить из одной в другую проще, да, качество кода не главное в этом проекте, главное донести основные мысли
Поддержка временных зон в фулстек-приложении на основе NestJS и Angular: работа с REST и WebSockets