繁体   English   中英

日期时间,比较在PHP中不起作用

[英]Datetime, comparing doesn't work in PHP

一些背景信息(如果需要,您可以跳过它)该项目如下:我有一个arduino连接到互联网,以控制我本地侦察大楼中一些取暖设备的继电器,当有与会者出席时,我希望该继电器去继续,该项目的这一部分是从Google日历获取日期和时间,并检查约会是否在此时进行,因此可以打开中继。 此脚本将与cron作业一起运行,因此每5分钟左右将检查是否必须打开继电器的条件,问题是我似乎无法检查时间是否在开始时间和结束时间之间。 因此,您知道一些背景知识,可能会对解决或改进代码有帮助:)这很愚蠢,但是经过数小时的尝试,我回到了你们身上!

该代码我有以下代码:

<?php
error_reporting(E_ALL);
   ini_set('display_errors', '1');
  $url='https://www.googleapis.com/calendar/v3/calendars/ijo7cj2i5dl958l15e4tml6pk8%40group.calendar.google.com/events?maxResults=10&orderBy=startTime&showDeleted=false&singleEvents=true&fields=items(end%2Cstart%2Csummary)&key=AIzaSyCBCQC6N55-k8TpOPkVNdyuVHV2MAp5-DI';
// create a new cURL resource

function download_page($path){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$path);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $retValue = curl_exec($ch);          
    curl_close($ch);
    return $retValue;
}

$json=json_decode(download_page($url),true);
$i=0;

foreach($json["items"] as $item){
    $dateNOW= new DateTime('NOW');
    $dateNOW->add(new DateInterval('PT1H00S'));
    echo $item["summary"]."<br>";
    //echo $test["start"]["dateTime"]."<br>";
    $dateBegin = DateTime::createFromFormat('Y-m-d\TH:i:sP',$item["start"]["dateTime"]);
    echo $dateBegin->format('d-m-Y H:i')."<br>";
    $dateEnd = DateTime::createFromFormat('Y-m-d\TH:i:sP',$item["end"]["dateTime"]); 
    echo $dateEnd->format('d-m-Y H:i')."<br>";
    echo $dateNOW->format('d-m-Y H:i')."<br>";
    if($dateNOW>$dateBegin){
        echo "Tim/date is bigger then datebegin<br>";
        if($dateNOW<$dateEnd){
            echo"Tim/date is bigger then dateEND<br>";
        }
    }
}
?>

我的问题是,我运行的程序Tim / date较大,那么datebegin可以正常工作,但是Tim / date较大,则dateEND根本不会显示。 我从各种资源中尝试了很多不同的东西,但是我无法使它正常工作,有人可以帮忙吗?

BTW错误报告仅适用于我的服务器,因为我通常不希望别人看到我的错误

php DateTime可以使用<> =直接比较。 我能想到的唯一问题是在不同的tinezone中,因此建议您尝试prinr_r($ dateNOW)以及其他两个变量,然后查看输出(而不是使用-> format格式化结果,这可能是取决于时区。

您可以将datetime对象设置为相同的时区

$dateEnd->setTimezone(new DateTimezone("your timezone"))

或者比较检索到的时间戳

$dateEnd->getTimestamp()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM