簡體   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