Zaman damgaları ve saat dilimi: dijital kayıtlarda saat nasıl okunur?

Zaman damgası (timestamp), bir sistemin bir olayı kaydettiği anı gösteren değerdir; çoğu sistem bu anı UTC'ye göre, sabit bir başlangıçtan (epoch) bu yana geçen süre olarak tutar. Türkiye saati 2016'dan beri yıl boyu UTC+3'tür, ama eski kayıtlarda fark mevsime göre değişir ve farklı sistemlerin saatleri birbirinden kayabilir; iki kaydı karşılaştırmadan önce her birinin saat referansı belirlenmelidir.

Güncellendi: Okuma süresi: 10 dkHazırlayan: md9

Kısaca

  • Unix zamanı 1970, Windows FILETIME 1601, Apple Cocoa zamanı 2001 başlangıçlıdır. Aynı an farklı sayılarla yazılır, üçü de UTC sayar.
  • Türkiye 7 Eylül 2016'dan beri kalıcı olarak UTC+3'tedir (2016/9154 sayılı Bakanlar Kurulu Kararı, RG 8.9.2016/29825). Öncesinde kışın UTC+2 uygulanıyordu; 2011, 2014 ve 2015'te geçişler Avrupa'dan farklı günlerde yapıldı.
  • NTP ile eşitlenmeyen bir saat, RFC 5905'in varsaydığı 15 ppm toleransla günde yaklaşık 1,3 saniye, yılda 8 dakikaya yakın kayabilir.
  • Bir kaydın UTC mi yerel saat mi yazdığı çoğu zaman dosyada belirtilmez. Bu belgelenmeden yapılan eşleştirme olayların sırasını değiştirebilir, yanlış aboneye götürebilir.
Bu sayfada
  1. Dijital kayıtlarda zaman nasıl tutulur?
  2. UTC ile Türkiye saati arasında kaç saat fark var?
  3. Hangi kayıt hangi saati yazar?
  4. Sistem saatleri neden kayar?
  5. Korelasyonda saat farkı nasıl hataya dönüşür?
  6. Raporda zaman nasıl yazılmalı?

Bir kayıtta zaman üç ayrı görünümde karşımıza çıkar: 1790510400 gibi bir sayı, 2026-09-27T12:00:00Z gibi farkı yazılmış bir metin ya da Sep 27 15:00:00 gibi yalnızca duvar saati. Üçü de aynı anı gösterebilir. Bizce iki kaydı yan yana koymadan önce sorulması gereken ilk soru budur: bu saat hangi saate göre?

Bu yazı zaman damgalarının nasıl tutulduğunu, UTC ile Türkiye saati arasındaki farkın tarihçesini, sistem saatlerinin neden kaydığını ve bunların korelasyonda nasıl hataya dönüştüğünü anlatıyor. Değerleri çevirmek için zaman damgası dönüştürücüyü kullanabilirsiniz; hesap tarayıcınızda yapılır.

Dijital kayıtlarda zaman nasıl tutulur?

Zaman üç biçimde yazılır ve her birinin kendi riski vardır.

Başlangıç noktasından sayılan değer (epoch)
Sistem sabit bir başlangıçtan bu yana geçen süreyi sayar: Unix 1 Ocak 1970'ten saniye, Windows FILETIME 1 Ocak 1601'den 100 nanosaniyelik aralık, Apple'ın Cocoa zamanı 1 Ocak 2001'den saniye. Bu değerler tanım gereği UTC'dir; saat dilimi sorunu değeri okunur tarihe çevirirken çıkar. Birim ise değerin kendisinde yazmaz, aynı uygulamada bir alan saniye, diğeri milisaniye olabilir.
Farkıyla birlikte yazılan tarih
2026-09-27T15:00:00+03:00 (ISO 8601, RFC 3339) ya da Apache'nin [27/Sep/2026:15:00:00 +0300] biçimi. UTC'ye göre fark satırın içindedir; Z farkın sıfır olduğunu gösterir. En güvenilir biçim budur, ama fark bilgisi kayıt başka bir tabloya aktarılırken kolayca düşer. RFC 6302'nin sunucu logları için yerel saat yerine UTC önermesinin gerekçesi de budur.
Farkı yazılmayan yerel saat
EXIF'teki DateTimeOriginal, FAT dosya sistemi tarihleri, eski tip syslog (RFC 3164) satırları, çoğu Excel tablosu. Değer bir duvar saatidir; hangi bölgeye ait olduğu başka bir alandan, cihaz ayarından ya da bağlamdan çıkarılır ve bu çıkarım raporda varsayım olarak yazılır. RFC 3164 satırında yıl da yoktur.

Aynı an, yani 27 Eylül 2026 12:00:00 UTC (Türkiye saatiyle 15:00), farklı biçimlerde şöyle görünür:

BiçimBaşlangıç ve birimDeğer
Unix1970-01-01 UTC, saniye1790510400
Unix (milisaniye)1970-01-01 UTC, ms1790510400000
Windows FILETIME1601-01-01 UTC, 100 ns134349840000000000
WebKit / Chrome1601-01-01 UTC, µs13434984000000000
Apple Cocoa2001-01-01 UTC, saniye812203200
HFS+1904-01-01 GMT, saniye3873355200
GPS1980-01-06, hafta ve haftanın saniyesi; artık saniye eklenmezhafta 2438, 43218 s
RFC 3339 metnifarkıyla2026-09-27T12:00:00Z
RFC 3164 syslog, Türkiye'deki bir cihazyerel saat, yıl yokSep 27 15:00:00

Günümüz tarihleri için basamak sayısı iyi bir ipucudur: 10 hane genellikle Unix saniyesi, 13 hane milisaniye, 17 hane WebKit değeridir. Bu yine de bir tahmindir; birim, aynı kaynaktan zamanı bilinen bir test kaydıyla doğrulanmalıdır.

UTC ile Türkiye saati arasında kaç saat fark var?

Bugün 3 saat. Türkiye saati UTC+3'tür ve yıl boyu değişmez. 27 Mart 2016'da ileri alınan saat, 8 Eylül 2016 tarihli ve 29825 sayılı Resmî Gazete'de yayımlanan 2016/9154 sayılı Bakanlar Kurulu Kararı'yla bir daha geri alınmadı. Daha eski kayıtlarda fark mevsime göre 2 ya da 3 saattir:

DönemUTC'ye göre farkNot
1985–2006Kışın +2, yazın +3Geçiş günleri ve saatleri yıllara göre değişti; o yılın kuralı IANA tz kaydından alınır
2007–2015, genel kuralKışın +2, yazın +3Geçişler Avrupa ile aynı: Mart ve Ekim'in son pazarı, 01:00 UTC
2011Kışın +2, yazın +3Yaz saatine 27 yerine 28 Mart'ta geçildi; 27 Mart'ta ülke çapında bir sınav vardı
2014Kışın +2, yazın +3Yaz saatine 30 yerine 31 Mart'ta geçildi; gerekçe yerel seçimdi
2015Kışın +2, yazın +3Kış saatine 25 Ekim yerine 8 Kasım'da dönüldü
27 Mart 2016'dan beri+37 Eylül 2016'dan itibaren kalıcı; Ekim 2017'de alınan yaz-kış uygulamasına dönüş kararı Kasım 2017'de geri alındı

Tarih de kayabilir. Örnek: 15 Ocak 2014 21:30 UTC, Türkiye saatiyle 23:30'dur. Sabit +3 eklenirse 16 Ocak 00:30 çıkar ve olay başka bir güne yazılır.

Hiç yaşanmayan saat, iki kez yaşanan saat

2016 öncesinde yaz saatine geçilen gece yerel saat 03:00'ten 04:00'e atlıyordu; o gece yerel saatle 03:00–03:59 yazan bir kayıt olağan değildir. Kış saatine dönülen gece ise 04:00'te saat 03:00'e alındığı için bu aralık iki kez yaşandı. Örnek: 26 Ekim 2014'te yerel saatle 03:30 yazan, farkı belirtilmemiş bir kayıt 00:30 UTC'yi de 01:30 UTC'yi de gösterebilir. Başka bir kaynakla çözülemiyorsa bu belirsizlik raporda yazılır.

Resmî saat ile cihazın gösterdiği saat aynı olmayabilir

IANA saat dilimi veri tabanının Türkiye notlarına göre 2014'teki geç geçişe seçim görevlileri uydu, cep telefonları uymadı; telefonlar saati Avrupa takvimiyle bir gün erken ileri aldı. 2015'te de otomatik ayarlı saatler resmî karara rağmen 25 Ekim'de geri gitti ve 8 Kasım'a kadar resmî saatin bir saat gerisinde kaldı. Güncellenmemiş saat dilimi verisi taşıyan cihazların 30 Ekim 2016'da saati yanlışlıkla geri almış olması da ihtimal dahilindedir.

Buradaki ince nokta şudur: dönüştürücüler, bizimki dahil, resmî kuralı uygular. O günlerde bir telefonun ekranda ve kendi kayıtlarında gerçekte hangi saati kullandığı ayrıca sınanmalıdır; yerel saatle yazılmış cihaz kayıtları ile resmî saate göre tutulmuş kayıtlar arasında bir saatlik fark beklenebilir.

Hangi kayıt hangi saati yazar?

Tablo sık karşılaştığımız kaynakların varsayılan davranışını gösterir. Yapılandırma değiştirilebilir; incelemede her kaynak ayrıca doğrulanır.

KaynakYazılan saatDikkat
NTFS dosya zamanlarıUTC (FILETIME)Dosya Gezgini yerel saate çevirerek gösterir.
FAT32 biçimli USB bellek, hafıza kartıYerel saat, fark yokDeğiştirme zamanı 2 saniye çözünürlüklüdür. Değer, dosyayı yazan cihazın o anki saat ayarını taşır.
exFATYerel saat ve UtcOffset alanıFark alanı geçerli işaretlenmişse UTC'ye çevrilebilir.
Windows olay günlüğü (EVTX)UTC (TimeCreated SystemTime)Olay Görüntüleyici ekranda yerel saat gösterir.
Linux journaldUTC, mikrosaniye__MONOTONIC_TIMESTAMP yalnızca aynı açılış (_BOOT_ID) içinde anlamlıdır.
Eski tip syslog (RFC 3164)Yerel saat; yıl ve fark yokRouter, switch ve modemlerde sık görülür.
Syslog (RFC 5424)RFC 3339 metni, farkıyla ya da ZEn fazla mikrosaniye; artık saniye kullanılmaz.
Apache, Nginx erişim loguYerel saat ve fark (+0300)Apache'de %t isteğin alındığı an, Nginx'te $msec logun yazıldığı andır.
E-posta Received: satırlarıYerel saat ve sayısal farkHer sunucu kendi saatini yazar; satırlar UTC'ye çevrilerek sıralanır.
EXIF DateTimeOriginalYerel saat, fark yokFark için OffsetTimeOriginal (Exif 2.31, 2016) gerekir; GPSTimeStamp ise UTC'dir.
Operatör dökümleri (HTS, internet oturumları)Çoğu zaman belgede yazmazBTK'nın İSS trafik logu dokümanı Türkiye yerel saatini esas alır. SWGDE'ye göre operatörler dökümü cihazın bulunduğu yerin, santralin ya da merkezin saatiyle veya sıklıkla UTC ile verebilir.

Fotoğraflardaki zaman alanları için EXIF verisi yazısına bakabilirsiniz.

Sistem saatleri neden kayar?

Her bilgisayarın, telefonun ve ağ cihazının kendi saati vardır ve hiçbiri tam doğru işlemez. NTP'nin (Network Time Protocol) dördüncü sürümünü tanımlayan RFC 5905, bir saatin frekans toleransını 15 ppm (milyonda 15) olarak varsayar. Buna göre eşitlenmeyen bir saat günde yaklaşık 1,3 saniye, bir yılda 8 dakikaya yakın sapabilir. Pili bitmiş bir anakart saati ya da elle yanlış kurulmuş bir kayıt cihazı ise saatlerce geride durabilir.

Bu yüzden NIST'in log yönetimi rehberi (SP 800-92) log üreten bütün sistemlerin saatinin ortak bir kaynağa eşitlenmesini ister; eşitlenmemiş kaynaklarda zamanlara ekleme ya da çıkarma yapmak gerekebileceğini de kabul eder. BTK da İSS'lerden bütün cihazlarının en az bir NTP sunucusundan zaman almasını istemektedir.

Bir kaynağın saatinin olay tarihinde doğru olup olmadığı ancak başka bir kaynakla karşılaştırılarak ölçülebilir. İzlediğimiz adımlar:

  1. Aynı olayın iki kaynakta birden iz bıraktığı anlar bulunur: cihazdan gönderilen bir e-postanın cihazdaki gönderim zamanı ile alıcı sunucunun Received: satırı, bir hesaba girişin sunucu logu ile tarayıcı geçmişindeki karşılığı, bir dosyanın bulut hizmetine yükleniş kaydı ile cihazdaki değiştirme zamanı.
  2. Bu çapa anları arasındaki fark hesaplanır. Fark sabitse saat kaymıştır (clock skew); zamanla büyüyorsa saat sürükleniyordur (drift).
  3. Saatin elle ya da yazılımla değiştirildiğine dair izler aranır: Windows'ta 4616 numaralı olay (sistem saati değiştirildi; denetim alt kategorisi ayarından bağımsız olarak kaydedilir), Linux'ta wtmp dosyasındaki saat değişikliği kayıtları, RFC 5424 syslog'da kaynağın saat güvenilirliğini bildiren timeQuality alanı (tzKnown, isSynced).
  4. Düzeltme uygulanacaksa değeri, dayanağı ve kabul edilen tolerans raporda yazılır; özgün değerler düzeltilmiş değerlerin yanında korunur.

Korelasyonda saat farkı nasıl hataya dönüşür?

Aşağıdaki örnekler kurgusaldır; her biri incelemelerde görülen bir hata türünü gösterir.

  1. Tersine dönen sıra. Örnek: HTS dökümünde bir arama 14:05'te görünüyor; telefonun imajından çıkan mesajlaşma veri tabanında aynı kişiye yazılmış mesaj 11:07. Rapor aramanın mesajdan üç saat sonra yapıldığını yazıyor. Oysa veri tabanındaki değer UTC'dir ve Türkiye saatiyle 14:07'dir: mesaj aramadan iki dakika sonra yazılmıştır.
  2. Yanlış abone. Örnek: Platform, hesaba girişin 03.11.2025 18:42:17 UTC'de yapıldığını bildiriyor. Talep yazısına saat dilimi belirtilmeden "18:42:17" olarak geçiyor ve Türkiye saatiyle tutulan operatör kaydında üç saat öncesi sorgulanıyor. CGNAT'lı bir adreste port bloğu o arada el değiştirmişse cevap başka bir aboneyi gösterir. Mekanizma: CGNAT nedir.
  3. Aynı fotoğrafta iki saat. Örnek: 1 Kasım 2015 akşamı, otomatik saat ayarlı ve saat dilimi verisi güncellenmemiş bir telefonla çekilen fotoğrafın EXIF DateTimeOriginal alanında 19:00 yazıyor, GPSTimeStamp ise 17:00 UTC. Resmî kurala göre bu an 20:00'dir. Telefon 25 Ekim'de saati geri almıştır; iki alan arasındaki bir saatlik fark manipülasyon değil, eski kuraldır.
  4. Yılı olmayan satır. Örnek: Bir modemin RFC 3164 biçimli logu Ocak 2026'da dışa aktarılıyor; satırlarda Dec 31 23:58:12 ve Jan 1 00:03:40 var. Araç yılı dışa aktarma tarihinden alırsa ilk satırı 31 Aralık 2026'ya koyar ve iki dakika arayla olan olaylar bir yıl ayrılır.
  5. USB bellekte kaymış saatler. Örnek: FAT32 biçimli bir bellekteki dosyalar, saati UTC'ye ayarlı bir dizüstünde yazılmış. FAT yerel saati fark bilgisi olmadan tuttuğu için dosya zamanları UTC değerini taşır; bellek Türkiye saatine ayarlı bir bilgisayarda açıldığında aynı değerler yerel saat gibi okunur ve dosyalar üç saat erken yazılmış görünür. NTFS UTC tuttuğu için aynı dosyanın dizüstündeki kopyasında bu sapma yoktur.

Raporda zaman nasıl yazılmalı?

Zamanla ilgili her bulgunun başkası tarafından tekrar üretilebilmesi için raporlarımızda şu kuralları uygularız:

  • Her zaman farkıyla yazılır: 2025-11-03 21:42:17 +03:00 ya da 18:42:17 UTC. Yalnızca "21:42" yazmak yetmez.
  • Her kaynağın saat referansı ve bunun nereden anlaşıldığı belirtilir: belgenin kendi beyanı, yapılandırma dosyası, test kaydı ya da çıkarım.
  • Çevrilen değerin özgün hâli (ham sayı ya da metin) yanında durur; okuyan çeviriyi kendisi tekrarlayabilir.
  • Kullanılan araç ve sürümü yazılır. 2014 ve 2015'teki geçiş dönemlerinde resmî kural ile cihazın fiilî davranışı ayrı ayrı değerlendirilir.
  • İki kaynak eşleştirilirken kabul edilen tolerans gerekçesiyle yazılır; tolerans içinde birden fazla aday kalıyorsa hepsi gösterilir.

Farklı sistemlerin kayıtlarını tek zaman çizelgesinde birleştirmek, saat kaymasını ölçmek ya da dosyadaki bir raporun saat dönüşümlerini denetlemek gerekiyorsa bunu log analizi kapsamında yapıyoruz. Logların güvenilirliğini etkileyen diğer etkenleri (yetkili erişim, rotasyon, bütünlük) log kayıtlarının güvenilirliği yazısında ele aldık.

Sık sorulan sorular

Unix zaman damgası nedir?

Unix zaman damgası, 1 Ocak 1970 00:00:00 UTC'den bu yana geçen saniye sayısıdır; Linux sistemleri, web uygulamaları ve birçok veri tabanı zamanı bu biçimde tutar. Değer tanım gereği UTC'dir, saat dilimi taşımaz. Örneğin 1790510400, 27 Eylül 2026 12:00 UTC'ye, Türkiye saatiyle 15:00'e karşılık gelir. JavaScript ve Android uygulamaları aynı değeri çoğu zaman milisaniye olarak, 13 haneli yazar.

2016'dan önceki bir kayıtta UTC'ye kaç saat eklenir?

Kaydın tarihine bağlıdır. 2016 öncesinde Türkiye kışın UTC+2, yazın UTC+3 kullanıyordu; geçişler genellikle Mart ve Ekim'in son pazarı yapılıyordu, ama 2011, 2014 ve 2015'te farklı günlere kaydırıldı. Kış aylarına ait bir UTC değere 3 saat eklemek bir saatlik hata verir, gece yarısına yakın saatlerde tarihi de değiştirir. Dönüşüm o tarihte geçerli kurala göre yapılmalıdır.

Türkiye'de yaz saati uygulaması ne zaman kalıcı hâle geldi?

27 Mart 2016'da ileri alınan saat bir daha geri alınmadı. 2016/9154 sayılı Bakanlar Kurulu Kararı 8 Eylül 2016 tarihli ve 29825 sayılı Resmî Gazete'de yayımlandı ve yaz saatinin yıl boyu uygulanmasını öngördü; o tarihten beri Türkiye saati sürekli UTC+3'tür. Ekim 2017'de 2018'den itibaren yaz ve kış saatine dönülmesi kararlaştırılmış, Kasım 2017'de bu karar geri alınmıştır.

Log kayıtları hangi saat dilimini kullanır?

Tek bir kural yoktur; kaynağa ve yapılandırmaya bağlıdır. Windows olay günlüğü, NTFS ve Linux journald UTC tutar; Apache ve Nginx erişim logları yerel saati +0300 gibi bir farkla yazar; eski tip syslog satırında ne fark ne yıl bulunur. RFC 6302 sunucuların UTC ve saniye hassasiyetinde kayıt tutmasını önerir. İncelemede her kaynağın saat referansı yapılandırmadan ya da test kaydından ayrıca doğrulanır.

Bir cihazın saati sonradan değiştirilirse bu anlaşılır mı?

Çoğu zaman iz kalır, ama her zaman değil. Windows sistem saatinin değiştirilmesini 4616 numaralı olayla kaydeder; Linux'ta wtmp dosyası saat değişikliklerini tutar. Kayıtların sırası da ipucu verir: sıra numarası artarken zamanı geriye giden satırlar dikkat çeker. Kesin tespit için aynı olayın başka bir sistemdeki, örneğin sunucu tarafındaki izine bakılır.

Tarihin sonundaki Z ve +03:00 ne anlama gelir?

ISO 8601 ve RFC 3339 biçimli tarihlerde saatin sonundaki ek, UTC'ye göre farkı gösterir. Z farkın sıfır olduğunu, yani saatin UTC olduğunu belirtir: 2026-09-27T12:00:00Z. +03:00 yerel saatin UTC'den üç saat ileride olduğunu gösterir; aynı an Türkiye'de 2026-09-27T15:00:00+03:00 olarak yazılır. Ek yoksa saat dilimi belirsizdir ve bağlamdan çıkarılmalıdır.

Kaynaklar

  1. Gün Işığından Daha Fazla Yararlanmak Amacıyla Bütün Yurtta Yaz Saati Uygulanması Hakkında Karar (Karar Sayısı: 2016/9154) — Resmî Gazete, 8 Eylül 2016, sayı 29825
  2. Time Zone Database, europe dosyası (Europe/Istanbul kuralları ve Türkiye notları) — IANA tz
  3. RFC 5905: Network Time Protocol Version 4 — IETF
  4. RFC 5424: The Syslog Protocol — IETF
  5. RFC 6302: Logging Recommendations for Internet-Facing Servers (BCP 162) — IETF
  6. NIST SP 800-92: Guide to Computer Security Log Management — NIST
  7. File Times (NTFS ve FAT zaman damgaları) — Microsoft Learn
  8. SWGDE 17-F-001-4.0: Recommendations for Historical Cell Site Analysis — SWGDE