Skip to content

fix(DateInput,Calendar): fix timezone using#9474

Open
EldarMuhamethanov wants to merge 1 commit intomasterfrom
e.muhamethanov/9384/calendars-timezone-fix
Open

fix(DateInput,Calendar): fix timezone using#9474
EldarMuhamethanov wants to merge 1 commit intomasterfrom
e.muhamethanov/9384/calendars-timezone-fix

Conversation

@EldarMuhamethanov
Copy link
Contributor


  • Release notes

Описание

Исправлена работа с часовыми поясами (timezone) в Calendar и DateInput.

Корень проблемы: при заданной таймзоне (например, America/New_York) отображение даты переводилось в эту таймзону через convertDateToTimeZone, но все изменения даты и времени делались через обычный Date: setHours, setMinutes, setTimeEqual и т.п. Эти методы всегда работают в системной таймзоне. В итоге мы смешивали два контекста: пользователь выбирал «16:00 по Нью-Йорку», а код трактовал это как «16:00 по системному времени» и пересчитывал момент — получался сдвиг по времени и по дню (например, выбор 9 февраля давал 8-е).

Решение: введена единая функция createDateInTimeZone в lib/date.ts, которая по компонентам (год, месяц, день, часы, минуты…) строит момент времени в указанной таймзоне. Все места, где дата/время меняются при заданной timezone (выбор дня, смена часов/минут, ввод с клавиатуры в DateInput, сохранение значения для отображения), переведены на эту функцию или на явную конвертацию в нужную таймзону.

Изменения

  • Calendar: выбор дня и смена часов/минут идут через createDateInTimeZone; в CalendarTime пробрасываются кастомные setHours/setMinutes.
  • CalendarTime: опциональные пропсы setHours и setMinutes для таймзонно-зависимого календаря.
  • DateInput: в Calendar передаётся timezone; при выборе из календаря и при вводе с клавиатуры значение строится/конвертируется с учётом таймзоны; в хуке при обновлении хранится значение в таймзоне для корректного отображения в полях.

Release notes

Исправления

  • Calendar: корректная работа с пропом timezone при выборе дня и при смене часов/минут в режиме выбора времени (время и день больше не сдвигаются из‑за системной таймзоны).
  • DateInput: корректное отображение и ввод даты/времени при заданном timezone (и в календаре, и при ручном вводе в поля).

@EldarMuhamethanov EldarMuhamethanov requested a review from a team as a code owner February 10, 2026 16:25
@github-actions github-actions bot added the ci:cherry-pick:patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча label Feb 10, 2026
@github-actions
Copy link
Contributor

size-limit report 📦

Path Size
JS 412.01 KB (+0.18% 🔺)
JS (gzip) 126.28 KB (+0.18% 🔺)
JS (brotli) 104.38 KB (+0.28% 🔺)
JS import Div (tree shaking) 811 B (0%)
CSS 373.48 KB (0%)
CSS (gzip) 46.29 KB (0%)
CSS (brotli) 36.62 KB (0%)

@github-actions
Copy link
Contributor

e2e tests

Playwright Report

@github-actions
Copy link
Contributor

📊 Найдены изменения в собранных файлах: Отчет

Commit 73cc1ee

@github-actions
Copy link
Contributor

👀 Docs deployed

📦 Package ✅

yarn add @vkontakte/vkui@https://development.s3.prodcloud.vk.team/pull/9474/73cc1eeff78e5b87e8c82ba5abb6dd5ede122941/pkg/@vkontakte/vkui/_pkg.tgz

Commit 73cc1ee

@codecov
Copy link

codecov bot commented Feb 10, 2026

Codecov Report

❌ Patch coverage is 89.65517% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.77%. Comparing base (2cc4c9b) to head (73cc1ee).
⚠️ Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
packages/vkui/src/components/Calendar/Calendar.tsx 60.00% 2 Missing ⚠️
packages/vkui/src/lib/date.ts 90.90% 1 Missing ⚠️
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     
Flag Coverage Δ
unittests 94.77% <89.65%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@inomdzhon inomdzhon removed the ci:cherry-pick:patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча label Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: DateInput скачет дата другим timezone

2 participants