19 Eylül 2021 Pazar

Time Zone Handling

Giriş
Burada bazı öneriler var

Veri tabanı Sütun Tipleri
Veri tabanında tarih ve saat metin (text) olarak asla saklanmamalı. Bu iş için sütun tipleri var.  Sütun tipi olarak ta UTC saklamak daha iyi. PostgreSQL için TIMESTAMP WITH TIME ZONE kullanılabilir.

Veri tabanı Sunucusu
Veri tabanının kendisi de UTC saat diliminde çalışmalı. Şeklen şöyle. Böylece veri tabanına yapılan select işlemleri de kolaylaşır. 
Not : Docker zaten varsayılan ayar olarak UTC ile başlıyor.

Java
Java kullanıyorsak eski  java.util.Date ve   java.util.Calendar sınıfları kullanılmamalı. Yeni Java sınıfları şöyle
Class         String representation Time zone applicability
Instant                         2021-05-27T16:05:48.147558500Z Always UTC
LocalTime                 21:35:48.284556200 NA
LocalDate                 2021-05-27         NA
LocalDateTime                 2021-05-27T21:35:48.286557 NA
OffsetTime                  21:35:48+05:30 Supports
OffsetDateTime                2021-05-27T21:35:48.288557+05:30 Supports
ZonedDateTime               2021-05-27T21:35:48.291556100                  Supports (DST aware)
                                        +05:30[Asia/Colombo]

Hibernate
Hibernate Kullanıyorsak veriyi UTC olarak kaydetmek için şöyle yaparız
#for plain hibernate
hibernate.jdbc.time_zone=UTC

#for Spring boot jpa
spring.jpa.properties.hibernate.jdbc.time_zone=UTC


Hiç yorum yok:

Yorum Gönder