• 23-10-2019, 02:53:02
    #1
    Merhabalar. PHP deki time(); işlevi ile unix zaman damgasını döndürebiliyoruz.
    time(); işlevi, yani Unix zaman damgası, GMT baz alınarak 1 Ocak 1970 00:00:00 tarihindan itibaren, günümüze kadar geçen zamanı saniye cinsinden gösteriyor.
    Biraz araştırdım fakat time(); işlevini Europe/Istanbul saat dilimine çeviremedim. Sunucu saati farklı ve bunu ayarlamaya gerek duymadan nasıl yapabileceğime baktım ama bulamadım.
    date_default_timezone_set('Europe/Istanbul');
    echo date("d.m.Y.H.i.s");
    Yukarıdaki komut, sadece date(); işlevinde işe yarıyor. Yani yukarıdaki komutu kullandığımda date(); formatında yazdırdığım tarihi İstanbul'a göre ayarlayabiliyorum. Ama yukarıdaki komut ile time(); işlevinde değişiklik yapamıyorum. İşe yaramıyor.
    Bu sorunu ancak time(); işlevine saat ekleyerek çözebildim. Unix zaman dilimi GMT kullanıyor ve Türkiye GMT +3 saat dilimini kullanıyor. +3 saati, saniye cinsinde time(); işlevine ekleyerek çözüm bulabildim. Eğer farklı bir yöntemi varsa ve bilen hocalarımız bilgilendirirse sevinirim
    $gmtfarki=10800;
    $time=time();
    $trtime=$gmtfarki+$time;
    echo $trtime;
    Konuyu açmamın sebebi: Hem farklı bir yöntemi varsa, onu da öğrenmek. Hem de; İnsanın kafası durunca google ye bakıyor ve orada çözümü bulamadığı için, konu index alsın ve basit te olsa bunu millet görebilsin diye konuyu açma gereğini duydum. Çözümü basit de olsa, PHP'ye yeni başlayanlar için faydalı bir çözüm olabilir diye düşündüm.

    @hasyer; hocamızın gösterdiği şekil, tam olarak aradığım koddur. Herkesin ellerine, emeklerine sağlık. Çok güzel, farklı yöntemler gördüm Herkese minnettarım

    hasyer adlı üyeden alıntı: mesajı görüntüle
    <?php
    function get_unix_time() {
    $date = new DateTime(null, new DateTimeZone('Europe/Istanbul'));
    return $date->getTimestamp() + $date->getOffset();
    }
    echo get_unix_time();
    ?>
  • 23-10-2019, 03:01:06
    #2
    strtotime fonksiyonu ile yapabilirsiniz.

    <?php
    date_default_timezone_set('UTC');
    
    $date = date('d.m.Y H:i:s'); // 23.10.2019 02:00:00
    $time = strtotime($date);
    echo $time;
    ?>
  • 23-10-2019, 03:04:31
    #3
    dediginiz gibi unix time GMT olarak hesaplaniyor. yani UTC +0 ile GMT ayni zamana esit. Istanbul UTC +3tur yani 3 saat ileridedir. GMT 1 Ocak 1970 00:00:00 iken UTC +3 ise 31 Aralik 1969 21:00:00 di. mantiken GMT yani UTC +0 baz alinarak hesaplanan bir seyi UTC +3 olarak donduremezseniz. bir cok yontem uygulanabilir ornegin date fonksiyonu ile donusturebilirsiniz yada 60*60*3 saniye eklerek
    • BalabanTURK
    BalabanTURK bunu beğendi.
    1 kişi bunu beğendi.
  • 23-10-2019, 03:05:00
    #4
    aponkral adlı üyeden alıntı: mesajı görüntüle
    strtotime fonksiyonu ile yapabilirsiniz.

    <?php
    date_default_timezone_set('UTC');
    
    $date = date('d.m.Y H:i:s'); // 23.10.2019 02:00:00
    $time = strtotime($date);
    echo $time;
    ?>
    Yardımınız için çok teşekkürler hocam

    Misafir adlı üyeden alıntı: mesajı görüntüle
    dediginiz gibi unix time GMT olarak hesaplaniyor. yani UTC +0 ile GMT ayni zamana esit. Istanbul UTC +3tur yani 3 saat ileridedir. GMT 1 Ocak 1970 00:00:00 iken UTC +3 ise 31 Aralik 1969 21:00:00 di. mantiken GMT yani UTC +0 baz alinarak hesaplanan bir seyi UTC +3 olarak donduremezseniz. bir cok yontem uygulanabilir ornegin date fonksiyonu ile donusturebilirsiniz yada 60*60*3 saniye eklerek
    Detaylı anlatımınız için teşekkür ederim hocam date_default-timezone_set komutu ile date içerisindeki tarihe müdahale ediyoruz ya, time(); işlevine de edilebilir sandım. Dediğiniz gibi mantık dışı oluyor. Birisi müdahale edilebilir, birisi müdahale edilemez, değiştirilemez bir şey Dediğiniz gibi date ile döönüştürülerek eklemek de mantıklı. Tekrardan teşekkür ederim, bilgilendirdiğiniz için
  • 23-10-2019, 03:10:51
    #5
    date_default_timezone_set('Europe/Istanbul');
  • 23-10-2019, 03:14:47
    #6
    aponkral adlı üyeden alıntı: mesajı görüntüle
    strtotime fonksiyonu ile yapabilirsiniz.

    <?php
    date_default_timezone_set('UTC');
    
    $date = date('d.m.Y H:i:s'); // 23.10.2019 02:00:00
    $time = strtotime($date);
    echo $time;
    ?>
    Zalmoxis adlı üyeden alıntı: mesajı görüntüle
    date_default_timezone_set('Europe/Istanbul');
    Dediğiniz örneği zaten yukarıda verdim hocam Bu işe yaramıyor time(); işlevinde. Saat dilimini İstanbul'a çevirmiyor yani Çözümü, ya saniye eklenecek, ya da hocamızın verdiği örnekteki gibi strtotime(); ile date(); kullanılarak çevirilecek. Başka çözüm varsa tabi ki iyi olur. Amaç farklı çözüm yollarınında olduğunu bilmek. Teşekkürler yorumunuz için
  • 23-10-2019, 03:20:49
    #7
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Dediğiniz örneği zaten yukarıda verdim hocam Bu işe yaramıyor time(); işlevinde. Saat dilimini İstanbul'a çevirmiyor yani Çözümü, ya saniye eklenecek, ya da hocamızın verdiği örnekteki gibi strtotime(); ile date(); kullanılarak çevirilecek. Başka çözüm varsa tabi ki iyi olur. Amaç farklı çözüm yollarınında olduğunu bilmek. Teşekkürler yorumunuz için
    Bende verdiğim kod çalışıyor görünüyor hocam, aşağıdaki tüm kodlar aynı sonucu veriyor. Gece gece dalgın olabilirim belki de hata yapıyorumdur bir yerde bilmiyorum.

    date_default_timezone_set('Europe/Istanbul');
    echo time();
    echo "<br>";
    echo strtotime(date('YmdHis'));
    echo "<br>";
    echo date('Y-m-d H:i:s');
    echo "<br>";
    echo date('Y-m-d H:i:s', time());
  • 23-10-2019, 03:30:56
    #8
    Zalmoxis adlı üyeden alıntı: mesajı görüntüle
    Bende verdiğim kod çalışıyor görünüyor hocam, aşağıdaki tüm kodlar aynı sonucu veriyor. Gece gece dalgın olabilirim belki de hata yapıyorumdur bir yerde bilmiyorum.

    date_default_timezone_set('Europe/Istanbul');
    echo time();
    echo "<br>";
    echo strtotime(date('YmdHis'));
    echo "<br>";
    echo date('Y-m-d H:i:s');
    echo "<br>";
    echo date('Y-m-d H:i:s', time());
    Bende GMT diliminde gösteriyor hocam bu kodlar. Sadece
    echo date('Y-m-d H:i:s');
    kodunun başına
    date_default_timezone_set('Europe/Istanbul');
    kodu girilince GMT+3 gösteriyor.
    date_default_timezone_set('Europe/Istanbul');
    echo time());
    şeklinde yazıldığında GMT +3 göstermiyor. (Ben, böyle nasıl gösterilebilir diye merak etmiştim. Onda da zaten mantık olarak edilemiyormuş Ancak, date(); yi strtotime ile çevirerek gösterilebiliyor ve birde saniye eklenerek çevirilebiliyor.)
    date_default_timezone_set('Europe/Istanbul');
    echo date('Y-m-d H:i:s');
    şeklinde kullanıldığında gösteriyor sadece, GMT+3 dilimini.
  • 23-10-2019, 03:48:49
    #9
    BalabanTURK adlı üyeden alıntı: mesajı görüntüle
    Yardımınız için çok teşekkürler hocam


    Detaylı anlatımınız için teşekkür ederim hocam date_default-timezone_set komutu ile date içerisindeki tarihe müdahale ediyoruz ya, time(); işlevine de edilebilir sandım. Dediğiniz gibi mantık dışı oluyor. Birisi müdahale edilebilir, birisi müdahale edilemez, değiştirilemez bir şey Dediğiniz gibi date ile döönüştürülerek eklemek de mantıklı. Tekrardan teşekkür ederim, bilgilendirdiğiniz için
    timestamp'a bir sey eklemek aslinda dusununce pek de mantikli gelmiyor cunku timestamp goren birisi direk sunu dusunur ve sunu gorur orada bu timestamp yani saniye cinsinden donen deger utc +0 yani ben kendi yerel saatime cevirmek istersem +3 yada +5 -3 -5 gibi degerler eklemem gerek der. zaten unixin amaci da bu. global genel gecer bir sey olusturmaktir. yani unixin dogasinin bozulmamasi gerektigini dusunuyorum. eger birden fazla local saat hizmeti sunacaksaniz unix bicilmis kaftan ama ben kendi yerel saatim bana yeter derseniz datetime formatinda Y-m-d H:i:syi tavsiye ederim
    $t = new DateTime();
    $t->setTimestamp(time());
    $t->setTimeZone(new DateTimeZone("Europe/Istanbul"));
    print_r($t->format('Y-m-d H:i:s'));
    yukaridaki kodla da basit bir sekilde unixi dilediginiz time zone dilimine cevirebilirsiniz. manuel olarak +3 saat eklemenizi tavsiye etmem ayrica yaz saati gibi uygulamalari dusundugunuzde buna manuel mudahale etmek kotu olur. sadece sizin icin degil dediginiz gibi index aldiginda yeni baslayan insanlar geldiginde zaman prensiplerine bir nebze hakim olmalari icin yazdim.
    • BalabanTURK
    BalabanTURK bunu beğendi.
    1 kişi bunu beğendi.