70">
Kod örnekli Yayın: 17 Temmuz 2026 8 dk okuma

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.

Kısa cevap Çoğu dilde şu anki epoch'u almak için bir sistem fonksiyonu (JS'te 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?

Kısa cevap JavaScript, epoch'u her yerde milisaniye cinsinden bekler. 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.
JavaScript
// Ş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?

Kısa cevap Python'da 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.
Python
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?

PHP
$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?

SQL'de epoch fonksiyonları — sistemlere göre karşılaştırma
İşlemMySQLPostgreSQL
Şu anki epochUNIX_TIMESTAMP()extract(epoch from now())
Epoch → tarihFROM_UNIXTIME(epoch)to_timestamp(epoch)
Tarih → epochUNIX_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?

Google Sheets / Excel formülü
' 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?

Kısa cevap Sıralama ve zaman dilimleri arası taşınabilirlik önemliyse epoch veya UTC tabanlı TIMESTAMP saklayın; kullanıcıya gösterirken dönüşümü istemci tarafında yapın. Yerel takvim kurallarına (iş saatleri, tatil günleri) bağlı veriler için zaman dilimi bilgisini ayrıca tutan bir tür (TIMESTAMPTZ) daha güvenlidir.
  • 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 tz belirtmeden fromtimestamp() ç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?
MySQL'de 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ı?
Sıralama ve taşınabilirlik için epoch/UTC timestamp tercih edilir; yerel takvim kurallarına bağlı veriler için zaman dilimini de tutan bir tür daha güvenlidir.
Epoch kullanırken en sık yapılan hata nedir?
Saniye ve milisaniye epoch'unu karıştırmak en yaygın hatadır; ikinci sırada saat dilimi belirtmeden (naive) datetime dönüşümü yapmak gelir.

İlgili rehberler

Metodoloji & kaynaklar. Kod örnekleri, ilgili dillerin (Node.js, Python 3, PHP 8) ve veritabanlarının (MySQL 8, PostgreSQL 16) resmi dokümantasyonuna dayanır; BirAraçta'nın epoch motoruyla çapraz doğrulanmıştır. Kaynaklar: ECMAScript Date özellikleri · Python 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.
Kaynak: ECMAScript · Python docs · PHP docs · MySQL/PostgreSQL docs · Güncelleme: 17 Temmuz 2026
Bilgilendirme amaçlıdır. · BirAraçta