Veri ve Entegrasyon Tasarımı / Uygulama ve satın alma rehberi

Yazılımda Saat Dilimi: UTC Saklamak Her Tarih Problemini Çözmez

Tek seferlik bir işlemin zamanı ile her pazartesi yerel saatte yapılacak toplantı aynı veri değildir. Bütün tarihleri UTC’ye çevirip bağlamı silmek, tekrar eden işlerde kullanıcının gerçek niyetini kaybetmenize neden olabilir.

An, yerel tarih ve tekrar kuralını ayırın

Bir ödeme tamamlandığı an belirli bir zaman çizgisi noktasını temsil eder. Bir doğum günü yalnızca yerel tarih olabilir. Bir mağazanın haftalık açılış saati ise saat dilimiyle ilişkili tekrar kuralıdır. Bunların hepsini aynı alan türüyle ele almak uygulamanın anlamını daraltabilir.

IANA saat dilimi veritabanı, yerel saat ve yaz saati kurallarındaki değişiklikleri yansıtan veriler içerir. [2] Bu nedenle yalnızca sabit UTC farkı saklamak bir bölgenin gelecekteki davranışını her zaman ifade etmez. Kullanıcının niyeti yerel saate bağlıysa bölge kimliği ve tekrar kuralı da korunmalıdır.

Ofset ile saat dilimi aynı değildir

UTC farkı belirli bir andaki farkı gösterir. Saat dilimi ise tarih boyunca uygulanabilen kuralları ifade eder. İki bölge bugün aynı farkta olabilir ama gelecekte farklı davranabilir. Uluslararası toplantı veya teslim planında yalnızca “artı üç” gibi bir değerle bütün ihtiyacı modellemeyin.

Python zoneinfo, IANA verileriyle çalışan saat dilimi nesneleri sağlar ve bazı yerel saatlerin tekrarlandığı geçişlerde ayrım yapılmasını destekler. [1] Kullanılan dil veya kütüphane farklıysa eşdeğer davranışlar kendi dokümantasyonundan kontrol edilmelidir. Kütüphanenin bulunması doğru iş kararının verildiğini kanıtlamaz.

Var olmayan ve tekrarlanan saati açık ele alın

Yaz saati geçişi uygulanan bazı bölgelerde bir yerel saat atlanabilir veya iki kez yaşanabilir. Kullanıcının seçtiği saatin böyle bir güne gelmesi halinde ne olacak? İleri taşıma, atlama veya açıklamalı seçim gibi bir politika gerekebilir. Uygulama sessizce farklı saate kayıt yapmamalıdır.

Varsayımsal bir çevrim içi eğitim her hafta belirli bölgenin yerel saatinde başlasın. Başka ülkedeki katılımcının gördüğü saat dönem içinde değişebilir. Eğitimin yerel saatiyle katılımcının görüntüleme saati ayrı tutulmalıdır. Bildirimde tarih ve saat dilimi açık gösterilsin; sadece “yarın sabah” gibi bağlamı belirsiz metin kullanılmasın.

Örnek zaman kabul tablosu

Örnek karar ve kabul kontrolleri
VeriKorunacak bağlamTest
Tamamlanan işlemKesin an ve kaynakFarklı bölgelerde aynı an
Tekrarlanan toplantıBölge ve tekrar kuralıSaat değişimi dönemi
Yerel son tarihTarih ve iş bağlamıGece yarısı dönüşümü
Kullanıcı bildirimiAlıcının gösterim bölgesiTarih kayması ve açıklık

Tablo belirli bir ülkenin güncel saat uygulamasını açıklamaz; sınanması gereken veri türlerini gösterir. Test için kullanılan bölgelerin güncel kuralları IANA verisiyle doğrulansın. Geçişleri sabit takvim varsayımlarıyla kod içine yazmak yerine güncel saat dilimi verisini kullanın.

Rapor sınırlarını da saat dilimine bağlayın

“Günlük sipariş” raporunun günü hangi bölgede başlıyor? Aynı UTC aralığı farklı yerel günleri kesebilir. Bir işletmenin rapor bölgesiyle kullanıcının ekran bölgesi farklı olabilir. Filtrede ve dosya çıktısında hangi sınırların kullanıldığı açıklansın. Yerel günlerin her koşulda aynı uzunlukta olduğunu varsaymayın.

Kabul testinde farklı bölgedeki kullanıcılar, gece yarısı yakınındaki işlemler ve tekrar eden planlar bulunsun. Saat dilimi veritabanı güncellendiğinde gelecekteki planların etkisi değerlendirilmelidir. Geçmiş işlemin kesin anı korunurken gelecekteki yerel niyet için yeniden hesaplama gerekebilir; bu karar yazılı olsun.

Sık sorulan sorular

Bütün tarihleri UTC saklamak yanlış mı?

Kesin anlar için yararlıdır. Ancak yerel tarih veya tekrar kuralının anlamını kaybetmemek için ek bağlam gerekebilir. Veri türüne göre karar verin.

Türkiye’de çalışıyorsak bu testlere gerek var mı?

Müşteri, sunucu, entegrasyon veya rapor farklı bölgeleri kullanabilir. Yalnızca şirketin bulunduğu yere bakarak zaman bağlamını ihmal etmeyin.

Teknik kaynaklar

  1. Python: IANA saat dilimi desteği ve belirsiz saatler
  2. IANA: saat dilimi veritabanı

Kaynaklar teknik kavramları destekler. Örnek tablolar ve senaryolar önerilen çalışma araçlarıdır; gerçek müşteri sonucu, bağımsız denetim veya platform garantisi değildir. Uygulama öncesinde kullanılan ürünün güncel koşulları kontrol edilmelidir.

Bu ihtiyacı çalışan bir sisteme dönüştürelim.

Mevcut sisteminizi, sorun yaşadığınız iş akışını ve beklediğiniz sonucu paylaşın. Ganz Dijital ile projenizin kapsamını ve kabul koşullarını netleştirin.

İlgili hizmeti inceleWhatsApp üzerinden görüşelim →

Hazırlama notu: İçerik, belirtilen kaynaklar ve özgün örnek senaryolar kullanılarak yapay zekâ desteğiyle hazırlanmıştır. Sayısal örnekler aksi belirtilmedikçe varsayımsaldır. İşletmeye özel güvenlik, hukuki ve operasyonel gereksinimler ayrıca değerlendirilmelidir.