J
Java-разработчик
@iamjavadev17 подп.
27просмотров
29 декабря 2025 г.
provocationScore: 30
⏳ TimeZone: тихая проблема, которая ударит в продакшене. LocalDateTime vs ZonedDateTime vs Instant — выбор не просто так. 🚫🙅 Типичная ошибка: // ОПАСНО для событий, которые должны быть в конкретный момент времени LocalDateTime meetingTime = LocalDateTime.of(2024, 6, 15, 14, 30); // Сохранили в БД... // У пользователя в Калифорнии meetingTime отобразится как 14:30 его времени! ✔️👍 Правильный подход: // Для моментов времени (meeting, flight, payment) — Instant Instant now = Instant.now(); // Внутри — Unix timestamp // Для времени с часовым поясом — ZonedDateTime ZonedDateTime meeting = ZonedDateTime.of( 2024, 6, 15, 14, 30, 0, 0, ZoneId.of("Europe/Moscow") ); // Для времени без контекста (день рождения) — LocalDate LocalDate birthday = LocalDate.of(1990, 5, 20); ❗️⭐ Особый случай — хранение в БД: 1. TIMESTAMP WITH TIME ZONE → Instant 2. TIMESTAMP WITHOUT TIME ZONE → LocalDateTime (осторожно!) 3. DATE → LocalDate 💎⭐️ Лайфхак: Внутри приложения работайте с Instant, конвертируя в нужный ZoneId только на границе (UI, API). // Единое представление Instant eventTime = Instant.now(); // Для пользователя ZonedDateTime userView = eventTime.atZone(user.getTimeZone()); 📌 Итог: Неправильная работа со временем — это тихий баг, который проявится при смене времени года или у пользователей в другом часовом поясе. Определите семантику времени для каждой сущности! ✈️Подписаться: @iamjavadev #datetime #timezone #java8 #bestpractices
27
просмотров
1458
символов
Да
эмодзи
Нет
медиа

Другие посты @iamjavadev

Все посты канала →
⏳ TimeZone: тихая проблема, которая ударит в продакшене. Loc — @iamjavadev | PostSniper