• 26-01-2024, 16:33:46
    #1
    Merhaba,
    time(); fonksiyonunu kullanıyorum ve timezone ayarını Europe/Istanbul yapmama rağmen 3 saat geriden geliyor. Bunu nasıl TR saatine göre uyarlayabilirim?
    <?php
    //----------------------------------------------
    function rtime($var = null)
    {
    date_default_timezone_set('Europe/Istanbul');
      if ($var === null) {
        $var = time();
      }
      $dateTime = new DateTime("@$var");
      $real_time = $dateTime->format('d.m.Y \S\a\a\t H:i');
      $date = $dateTime->format('d.m.Y');
      if ($date == date('d.m.Y')) {
        $real_time = $dateTime->format('\B\u\g\u\n \S\a\a\t H:i:s');
      }
      if ($date == date('d.m.Y', time() - 60 * 60 * 24)) {
        $real_time = $dateTime->format('\D\u\n \S\a\a\t H:i:s');
      }
      return $real_time;
    }
    //----------------------------------------------
    $Tarih = time();
    echo rtime($Tarih);
    ;

    Sonuç "Bugun Saat 13:31:46" olarak gösteriyor ama 16:31:46 olara göstermesi gerekirdi.
  • 26-01-2024, 16:41:35
    #2
    $now = new DateTime(); 
    $now->setTimezone(new DateTimeZone('Europe/Istanbul')); 
    echo $now->format('Y-m-d H:i:s');
    bu şekilde dener misin?
  • 26-01-2024, 16:44:39
    #3
    byroot adlı üyeden alıntı: mesajı görüntüle
    $now = new DateTime();
    $now->setTimezone(new DateTimeZone('Europe/Istanbul'));
    echo $now->format('Y-m-d H:i:s');
    bu şekilde dener misin?
    Evet, kod üzerinde bu dediğinizi düzenleyince çalıştı. Çok teşekkür ederim.
  • 26-01-2024, 16:45:26
    #4
    sinanyilmaz47 adlı üyeden alıntı: mesajı görüntüle
    Evet, kod üzerinde bu dediğinizi düzenleyince çalıştı. Çok teşekkür ederim.
    Rica ederim iyi çalışmalar.
  • 26-01-2024, 17:22:13
    #5
    DateTime sınıfı ikinci parametre olarak timezone değerini alır. Eğer DateTime sınıfını çağırırken ikinci parametreyi girmezseniz null değeri atanır. setTimezone kullanmadan direkt constructor içerisinde timezone verebilirsiniz:

    <?php 
    $dateTime = new DateTime(datetime: 'now', timezone: new DateTimeZone('Europe/Istanbul'));
    echo "Istanbul: " . $dateTime->format('Y-m-d H:i:s').PHP_EOL;
    $dateTime->setTimezone(new DateTimeZone('Europe/Berlin'));
    echo "Berlin: " . $dateTime->format('Y-m-d H:i:s').PHP_EOL;