PHP Time Stamp

Veritabanlarında zaman formatı(date, time) kullanmak sıkıntı veriyor ise, yerine INTEGER alanı ve timestamp değeri kullanarabiliriz.

Örneğin

<?php
$simdi = time();
echo $simdi; // 1401749710
?>

Çıktı 1401749710 gibi 10 haneli bir rakam oldu. Bu rakam içinde bulunduğumuz o anki saniyedir ve bu rakam sayesinde, gün, ay, yıl saat, dakika ve saniyeye erişebiliriz.

Şimdi biraz daha genişletelim ve zaman dilimimizi İstanbul yapalım, ardından o anki zamanı alalım ve zaman formatıyla ekrana yansıtalım;

<?php
date_default_timezone_set('Europe/Istanbul');
$simdi = time();
// tarih ve zaman
$zaman = date('d.m.Y H:i:s',$simdi);
echo $zaman; // 03.06.2014 02:07:04
?>

o halde veritabanında tablo alanımızı INTEGER olarak ayarlıyoruz ve kaydederken time() değerini kaydediyoruz.

Bir takvim ya da bir text vasıtasıyla girilen formatlı bir tarihin, time değerini nasıl alacağız? Bu karşılacağımız temel bir sorundur. Bu durumda ise işlemin tersini yapacağız yani nasıl ki üstteki örnekte time değerini tarih formatına çevirdik ve sonucu elde ettik ise, şimdi tarih formatıyla girilen değeri time stamp değerine dönüştüreceğiz.

<?php
$secilen_tarih = '03.06.2014';
$parcala = explode('.', $secilen_tarih);
$al = $parcala[2].'-'.$parcala[1].'-'.$parcala[0]; 
$gdate = new DateTime($al);
echo $gdate->getTimestamp(); // 1401742800
?>

Veritabanına kaydederken time(), okurken date formatına çevireceğiz, tarih formatlı aramalarda ise aranan tarihleri bir üstteki kodlarda olduğu gibi time değerine çevirecek ve sorgulayacağız. Bu şekilde tarih işlemleri çok daha verimli olur diye düşünüyorum.

1 Yorum

  1. Geri izleme: PHP Time & Srtotime | VebLebi - Biraz oradan biraz buradan

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir