• 27-12-2020, 18:00:35
    #1
    Dinamik bir gece modu yapmak istiyorum. Bunun için gün doğumundan batımına kadar olan süreyi hesaplamam gerekiyor.

    Örnek:
    Gündüz 07:00/18:00 arası gündüz teması
    Akşam 18:00/07:00 arası gece teması

    Yüklenmesini istiyorum. Bu durumda içinden çıkamadığım 2 konu var.

    1. PHP ile bölgesel saat dilimini çekeceğim. Bu saat dilimini gece ve gündüz olarak nasıl hesaplayabilirim?

    2. Saat biçimi olarak 24 değil, 12 saat kullanan ülkeler var. Bu durumda hesaplama nasıl yapılmalı?
  • 27-12-2020, 18:45:39
    #3
    <?php
    
    //  $_SERVER['REMOTE_ADDR'] Sayfayı Açan Kullanıcının Ip  adresini bu  değişken ile  alıyoruz  
    $json   = file_get_contents( 'http://ip-api.com/json/'.$_SERVER['REMOTE_ADDR']); //Kullanıcıdan aldığımız Ip adresini ip-api.com üzeinden  hangi ülkede /Bölgeden bağlantı yaptığını sorgulatıyoruz
    
    $ipData = json_decode( $json, true);
    //die(var_dump($ipData));//JSON Verisine göz atmak istiyorsanız busatırı aktif edin
    $tz = new DateTimeZone( $ipData['timezone']);//jsonun döndürdüğü zaman bölgesi verisini kullanarak bir DateTimeZone verisi oluşturuyoruz
    $now = new DateTime( 'now', $tz) ;//Bulunduğu Bölgenin  şuanki saatinin ve tarihinin bilgisini alıyoruz  
    $sekilYap=$now->format('Y-m-d H:i:s');
    //Kullanıcının Orda  Saat Kaç ayırmak için Fonksiyon tanımıyoruz
    function OrdaSaatKac($veri){
     
       if(date("H",$veri) < 12){
     
         return "Sabah Oluyor";
     
       }elseif(date("H",$veri) > 11 && date("H",$veri) < 18){
     
         return "Akşam Üstü";
     
       }elseif(date("H",$veri) > 17){
     
         return "Gece Oluyor";
     
       }
     
    }
     echo  "Şuanda " . $ipData['regionName']." de/da ".OrdaSaatKac(strtotime($sekilYap));
    
    ?>

    Demo: http://enesbiber.com.tr/ornekler/saatkac.php
    Test Etmek için https://www.proxysite.com/ adresinden Server değiştirerek Kontrol edebilirsiniz Kolay geldin
  • 27-12-2020, 19:22:02
    #4
    İnceliğinize teşekkür ederim. Kodu incelediğimde 24 saat üzerinden bir hesaplama durumu söz konusu, 12 saat formatı kullanan bölgeler için nasıl bir işlem sağlamalıyım, saat formatını çekip 24 saat formatına çevirebilir miyiz?
  • 27-12-2020, 20:02:19
    #5
    AKSOYOGLU adlı üyeden alıntı: mesajı görüntüle
    İnceliğinize teşekkür ederim. Kodu incelediğimde 24 saat üzerinden bir hesaplama durumu söz konusu, 12 saat formatı kullanan bölgeler için nasıl bir işlem sağlamalıyım, saat formatını çekip 24 saat formatına çevirebilir miyiz?
    // 24-hour time to 12-hour time 
    $time_in_12_hour_format  = date("g:i a", strtotime("13:30"));
    // 12-hour time to 24-hour time 
    $time_in_24_hour_format  = date("H:i", strtotime("1:30 PM"));
  • 27-12-2020, 21:00:59
    #6
    PHP ile client saatlerini alamazsınız. Bu işi javascript ile yapmak zorundasınız.

    https://darkmodejs.learn.uno/
  • 28-12-2020, 01:56:42
    #7
    Yardımcı olan herkese sonsuz teşekkürler.