Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在api中使用日期变量_Php_Date_Variables - Fatal编程技术网

Php 在api中使用日期变量

Php 在api中使用日期变量,php,date,variables,Php,Date,Variables,我创建了一个页面,要求用户输入日期并从api输出结果。api要求开始日期和结束日期的间隔不得超过7天。我已经设置好了,用户可以输入日期,结束日期将自动设置为7天后 我在使用date函数时遇到问题,现在代码似乎会在用户可以输入其选择之前自动使用todays date 我希望用户能够选择该日期,无论是今天还是将来的日期,我希望api调用等待用户输入,但不确定如何完成 <?php $startDate = date('Y-m-d', strtotime(isset($_GET['

我创建了一个页面,要求用户输入日期并从api输出结果。api要求开始日期和结束日期的间隔不得超过7天。我已经设置好了,用户可以输入日期,结束日期将自动设置为7天后

我在使用date函数时遇到问题,现在代码似乎会在用户可以输入其选择之前自动使用todays date

我希望用户能够选择该日期,无论是今天还是将来的日期,我希望api调用等待用户输入,但不确定如何完成

    <?php
    $startDate = date('Y-m-d', strtotime(isset($_GET['start'])? $_GET['start'] :date('Y-m-d')));
    $endDate = date('Y-m-d', strtotime('+7 days', strtotime($startDate)));

if($startDate){
    echo "$endDate";        

    $params = array(
    'start_date' => $startDate,
    'end_date' => $endDate,
    'api_key' => 'coXJeNygdeuxVKs9yJLecWbfuXsY54Wi9gq37HuN'
);


    $data = json_decode(callAPI('GET', 'https://api.nasa.gov/neo/rest/v1/feed', $params));

    echo "<h1>Near-Earth Object (NEO) Report between " . $params['start_date'] . " and " . $params['end_date'] . "</h1>";

   foreach ($data->near_earth_objects as $date => $count) {
    echo "<p>" . sizeof($count) . " objects detected on $date</p>";

    echo "<ol>";
    foreach ($data->near_earth_objects->$date as $near_earth_object) {
        echo "<li>" . $near_earth_object->name . " <a href='" . $near_earth_object->nasa_jpl_url . "'>" . $near_earth_object->nasa_jpl_url . "</a><br>";
        echo "Estimated Diameter: " . $near_earth_object->estimated_diameter->meters->estimated_diameter_min . "-" . $near_earth_object->estimated_diameter->meters->estimated_diameter_max . " metres<br>";

        echo "<ul>";
        foreach ($near_earth_object->close_approach_data as $close_approach) {
            echo "<li>Close approach on " . $close_approach->close_approach_date . " velocity " . $close_approach->relative_velocity->kilometers_per_hour . " km/h " . "missing " . $close_approach->orbiting_body . " by " . $close_approach->miss_distance->kilometers . " km</li> ";
        }
        echo "</ul></li>";
    }
    echo "</ol>";
    }

    }
    ?> 

这几乎就是你想要的开始。只需在if语句中添加一个else,并在未输入日期时更新开始/结束日期以返回false。注意:我还将标题移到了if上方,并添加了第三个条件,以显示已输入的日期,以便始终显示该日期


请输入开始日期(结束日期为开始日期后7天):

如果在您给用户选择之前调用了此代码,那么这不是此代码的错误。您需要在调用此代码的任何代码中修复此问题。请注意,
strotime(…,date('Y-m-d'))
只是浪费cpu周期。强制PHP接受“now”,将其转换为字符串,然后将该字符串解析回“now”值是没有意义的。只需输入
time()
或其他信息。谢谢Jim,我现在就实现它,这正是我想要做的