www.webdeveloper.com
Results 1 to 5 of 5

Thread: Detct Nighttime with Sunrise/Sunset - NOT WORKING

  1. #1
    Join Date
    Nov 2013
    Posts
    41

    Question Detct Nighttime with Sunrise/Sunset - NOT WORKING

    Why won't this work?
    Code:
    $date_sun_info = date_sun_info(time(), 38.4, -9);
    $time_YmdHis = date("YmdHis", time());
    $sunrise_YmdHis = date("YmdHis", $date_sun_info['sunrise']);
    $sunset_YmdHis = date("YmdHis", $date_sun_info['sunset']);
    
    if (($sunset_YmdHis <= $time_YmdHis) && ($time_YmdHis <= $sunrise_YmdHis)) {
                echo "night";
    }
    If it is the nighttime (after sunset and before sunrise) it should output "night". But it doesn't. There are no errors in the log.

  2. #2
    Join Date
    Nov 2013
    Posts
    33
    your checking that sunset and sunrise are true which is a false value, you need to check the or value ||
    Code:
    if (($sunset_YmdHis <= $time_YmdHis) || ($time_YmdHis <= $sunrise_YmdHis)) {
                echo "night";
    }

  3. #3
    Join Date
    Nov 2013
    Posts
    41
    I instead saw it was more practical to use Javascript in the situation and found this library: https://github.com/mourner/suncalc. Thanks for your help anyways.

  4. #4
    Join Date
    Sep 2013
    Posts
    221
    Below is the example code for date_sunset:

    <?php

    /* calculate the sunset time for Lisbon, Portugal
    Latitude: 38.4 North
    Longitude: 9 West
    Zenith ~= 90
    offset: +1 GMT
    */

    echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

    ?>

    Now, for Day and night try out with the another code given below:

    <?php
    date_default_timezone_set("GMT");

    function scheme() {
    $sunrise = date_sunrise(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
    $sunset = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
    $now = date("H") + date("i") / 60 + date("s") / 3600;

    if ($sunrise < $sunset)
    if (($now > $sunrise) && ($now < $sunset)) return "day";
    else return "night";
    else
    if (($now > $sunrise) || ($now < $sunset)) return "day";
    else return "night";
    }
    ?>

    Hope this helps.
    strad solutionswww.stradsolutions.com

  5. #5
    Join Date
    Nov 2013
    Posts
    41
    Thanks, but as I said above, I found a better library in Javascript (https://github.com/mourner/suncalc) that can process more data. Also, I am on a very limited CPU and memory server (it's an internal site), and for simple math like this, it makes more sense to do it Client-Side.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles