fix(DateInput,Calendar): fix timezone using#9474
Open
EldarMuhamethanov wants to merge 1 commit intomasterfrom
Open
fix(DateInput,Calendar): fix timezone using#9474EldarMuhamethanov wants to merge 1 commit intomasterfrom
EldarMuhamethanov wants to merge 1 commit intomasterfrom
Conversation
Contributor
size-limit report 📦
|
Contributor
e2e tests |
Contributor
Contributor
👀 Docs deployed
📦 Package ✅yarn add @vkontakte/vkui@https://development.s3.prodcloud.vk.team/pull/9474/73cc1eeff78e5b87e8c82ba5abb6dd5ede122941/pkg/@vkontakte/vkui/_pkg.tgzCommit 73cc1ee |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #9474 +/- ##
==========================================
- Coverage 94.78% 94.77% -0.02%
==========================================
Files 441 441
Lines 11912 11933 +21
Branches 4391 4403 +12
==========================================
+ Hits 11291 11309 +18
- Misses 621 624 +3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Описание
Исправлена работа с часовыми поясами (
timezone) в Calendar и DateInput.Корень проблемы: при заданной таймзоне (например,
America/New_York) отображение даты переводилось в эту таймзону черезconvertDateToTimeZone, но все изменения даты и времени делались через обычныйDate:setHours,setMinutes,setTimeEqualи т.п. Эти методы всегда работают в системной таймзоне. В итоге мы смешивали два контекста: пользователь выбирал «16:00 по Нью-Йорку», а код трактовал это как «16:00 по системному времени» и пересчитывал момент — получался сдвиг по времени и по дню (например, выбор 9 февраля давал 8-е).Решение: введена единая функция createDateInTimeZone в
lib/date.ts, которая по компонентам (год, месяц, день, часы, минуты…) строит момент времени в указанной таймзоне. Все места, где дата/время меняются при заданнойtimezone(выбор дня, смена часов/минут, ввод с клавиатуры в DateInput, сохранение значения для отображения), переведены на эту функцию или на явную конвертацию в нужную таймзону.Изменения
createDateInTimeZone; в CalendarTime пробрасываются кастомныеsetHours/setMinutes.setHoursиsetMinutesдля таймзонно-зависимого календаря.timezone; при выборе из календаря и при вводе с клавиатуры значение строится/конвертируется с учётом таймзоны; в хуке при обновлении хранится значение в таймзоне для корректного отображения в полях.Release notes
Исправления
timezoneпри выборе дня и при смене часов/минут в режиме выбора времени (время и день больше не сдвигаются из‑за системной таймзоны).timezone(и в календаре, и при ручном вводе в поля).