Programlamada Zaman Damgası Kullanımı
Neredeyse her programlama dili tarihi iç mimaride epoch olarak tutar; sorun genelde bunu doğru üretmek ve doğru okumakta ortaya çıkar. Bu rehberde JavaScript, Python, PHP, SQL ve Google Sheets'te epoch'un nasıl üretileceğini, nasıl okunacağını ve veritabanı tasarımında nelere dikkat edilmesi gerektiğini kod örnekleriyle gösteriyoruz.
Date.now(), Python'da time.time(), PHP'de time()) kullanılır; epoch'tan tarihe dönmek için ise dilin tarih nesnesi epoch'u alır (JS new Date(ms), Python datetime.fromtimestamp()). En kritik nokta, dilin epoch'u saniye mi milisaniye mi beklediğini bilmek ve saat dilimini (UTC vs yerel) açıkça belirtmektir.
Programlamada neden epoch kullanılır?
Epoch tek bir tam sayı olduğu için toplanabilir, çıkarılabilir ve sıralanabilir — "2026-07-17" gibi bir string'i başka bir tarihle karşılaştırmak için önce ayrıştırmak (parse etmek) gerekirken, iki epoch'u karşılaştırmak sıradan bir sayı karşılaştırmasıdır. Bu yüzden performans kritik kodlarda, önbellek süre hesaplarında ve tarih sıralamalarında epoch tercih edilir.
JavaScript'te zaman damgası nasıl kullanılır?
Date.now() şu anki epoch'u milisaniye döndürür; new Date(epochMs) bir epoch'tan Date nesnesi üretir. Saniye cinsinden bir epoch'unuz varsa 1000 ile çarpmanız gerekir.
// Şu anki epoch (milisaniye ve saniye)
const nowMs = Date.now(); // ör. 1752762600123
const nowS = Math.floor(nowMs/1000); // ör. 1752762600
// Epoch (saniye) -> tarih
const epochS = 1700000000;
const tarih = new Date(epochS * 1000); // Date nesnesi bekler: MİLİSANİYE
console.log(tarih.toISOString()); // 2023-11-14T22:13:20.000Z
// Tarih -> epoch (saniye)
const epoch = Math.floor(new Date('2026-07-17T14:30:00Z').getTime()/1000);
Python'da zaman damgası nasıl kullanılır?
time.time() şu anki epoch'u saniye (ondalıklı) cinsinden döndürür. Epoch'tan tarihe geçmek için datetime.fromtimestamp() kullanılır; saat dilimini açıkça belirtmezseniz (tz=timezone.utc) sonuç sisteminizin yerel saatine göre yorumlanır — bu, sunucu/istemci arası en sık karışıklık kaynağıdır.
from datetime import datetime, timezone import time now_s = time.time() # ör. 1752762600.457 (saniye, ondalıklı) epoch = 1700000000 utc_tarih = datetime.fromtimestamp(epoch, tz=timezone.utc) print(utc_tarih.isoformat()) # 2023-11-14T22:13:20+00:00 # Tarih -> epoch dt = datetime(2026, 7, 17, 14, 30, tzinfo=timezone.utc) epoch_geri = int(dt.timestamp())
PHP'de zaman damgası nasıl kullanılır?
$now = time(); // şu anki epoch (saniye)
echo date('Y-m-d H:i:s', 1700000000); // 2023-11-14 22:13:20 (sunucu saat dilimine göre)
echo gmdate('Y-m-d H:i:s', 1700000000); // 2023-11-14 22:13:20 (her zaman UTC)
$epoch = strtotime('2026-07-17 14:30:00 UTC');
PHP'de date(), date_default_timezone_set() ile ayarlanan saat dilimini kullanır; gmdate() ise her zaman UTC verir. Sunucular arası tutarlılık için loglama ve API çıktılarında gmdate() tercih edilmesi önerilir.
SQL'de zaman damgası nasıl kullanılır?
| İşlem | MySQL | PostgreSQL |
|---|---|---|
| Şu anki epoch | UNIX_TIMESTAMP() | extract(epoch from now()) |
| Epoch → tarih | FROM_UNIXTIME(epoch) | to_timestamp(epoch) |
| Tarih → epoch | UNIX_TIMESTAMP(kolon) | extract(epoch from kolon) |
Kaynak: MySQL 8 ve PostgreSQL 16 resmi dokümantasyonu. Her iki sistemde de sonuçların hangi saat diliminde (genelde UTC) yorumlandığına dikkat edin — sunucu ayarına göre değişebilir.
Google Sheets / Excel'de epoch nasıl hesaplanır?
' Epoch -> tarih (E1 hücresinde epoch saniye var) =(E1/86400)+DATE(1970,1,1) ' Tarih -> epoch (A1 hücresinde tarih var) =(A1-DATE(1970,1,1))*86400
Sheets ve Excel tarihleri "1899/1900'den beri geçen gün sayısı" olarak tutar; epoch'a çevirirken önce günü saniyeye (× 86400) çevirip 1970 referansıyla farkını almak gerekir. Hücre otomatik tarih formatına dönüşmesin diye "Sayı" biçimini seçmeyi unutmayın.
Kod yazmadan hızlıca test et
Yukarıdaki örneklerdeki epoch değerlerini (1700000000, 2147483647...) bu araca yapıştırıp sonucu aynı UTC saat diliminde doğrulayabilirsiniz.
Epoch Çeviriciyi Aç →Veritabanı tasarımında epoch kullanırken nelere dikkat edilmeli?
- Her zaman UTC'de sakla: Sunucu saat dilimi ne olursa olsun UTC epoch/timestamp kullanın; görüntülemeyi istemci tarafında yapın.
- Birimi sabitleyin: Bir kolonun saniye mi milisaniye mi epoch tuttuğunu ekip içinde netleştirin ve kolon adında belirtin (ör.
created_at_ms). - Tamsayı boyutuna dikkat edin: Milisaniye epoch, 32-bit tamsayı sınırını fazlasıyla aşar; kolon türünü en az 64-bit (BIGINT) seçin.
- İndeksleyin: Epoch tabanlı sıralama ve aralık sorguları (ör. "son 7 gün") için kolona indeks eklemek performansı artırır.
Sık yapılan programlama hataları
- Saniye/milisaniye karışıklığı: Saniye epoch'u milisaniye sanarak vermek (veya tersi), tarihi 1970'e yakın ya da binlerce yıl sonrasına fırlatır.
- Naive (saat dilimsiz) datetime kullanmak: Python'da
tzbelirtmedenfromtimestamp()çağırmak, sonucu sunucunun yerel saatine göre yorumlar; farklı sunucularda farklı sonuç çıkar. - 32-bit taşmasını göz ardı etmek: Eski kütüphaneler veya gömülü sistemler epoch'u 32-bit saklarsa 2038 sonrası hata verir.
- Yanlış yuvarlama:
time.time()kesirli saniye döndürür; tam sayıya çevirirken kesme (truncate) ile yuvarlama (round) farklı sonuç verebilir. - String karşılaştırması yapmak: İki epoch'u sayı yerine string karşılaştırmak yanlış sıralamaya yol açar; her zaman sayıya çevirip karşılaştırın.
Sık sorulan sorular
JavaScript'te epoch nasıl üretilir?
Date.now() milisaniye cinsinden şu anki epoch'u döndürür. Saniyeye çevirmek için Math.floor(Date.now()/1000) kullanılır. Epoch'tan tarihe dönmek için new Date(epochMs) — dikkat, JS her zaman milisaniye bekler.Python'da epoch nasıl kullanılır?
time.time() saniye cinsinden şu anki epoch'u verir. datetime.fromtimestamp(epoch, tz=timezone.utc) ile UTC'ye göre tarihe çevrilir; tz belirtilmezse yerel saat dilimi varsayılır.SQL'de unix timestamp nasıl kullanılır?
UNIX_TIMESTAMP() ve FROM_UNIXTIME(); PostgreSQL'de extract(epoch from ...) ve to_timestamp() kullanılır. Saat dilimi tutarlılığına dikkat edin.Veritabanında tarih epoch mu DATETIME olarak mı saklanmalı?
Epoch kullanırken en sık yapılan hata nedir?
İlgili rehberler
datetime/time modülü · PHP tarih fonksiyonları · MySQL/PostgreSQL belgeleri. Son güncelleme: 17 Temmuz 2026. Üretim kodunda kendi ortamınıza göre test edin.