2017-03-29 100 views
0

我在使用PHP的'diff()'或'date_diff()'之間的兩個日期之間有問題。基本上,當我運行任何試圖比較日期或試圖定義某個日期作爲日期的頁面時,頁面將停止加載。PHP中的diff()和date_diff()不工作由於某種原因

<?php 

    // My starting point is the $dirty_date variable. 
    // It is collected from a string, parsed, 
    // and ends up being an integer-based date/seconds past Unix Epoch 

    //I am also including some echos along the way for debugging purposes. 

    echo "Check 1: ".$dirty_date."<br>"; 

    $systemdate = date("U"); 
    echo "Check 2: ".$systemdate."<br>"; 

    //$interval = $dirty_date->diff($systemdate); 
    echo "check 3: ".$interval; 

下面是結果:

檢查1:1490781836

檢查2:1490806703

檢查3:

入住3返回任何內容,因爲我有一個的diff線它評論說。我把它註釋掉了,因爲如果它被啓用,頁面不會加載任何其他的東西。

+3

' - >'用於對象。 '的error_reporting(E_ALL); ini_set('display_errors','1');' – AbraCadaver

+3

看起來像你的$ dirty_date只是一個整數。你需要\ DateTime對象。 $ dirty_date = \ DateTime :: setTimestamp($ dirty_date) –

+0

http://php.net/manual/en/datetime.diff.php是一個好開始 – MonkeyZeus

回答

0

下面是一個例子

$dirty_date = new \DateTime(); 
    $dirty_date->setTimestamp("your integer date"); 
    echo "Check 1: ".$dirty_date->format(\DateTime::ISO8601)."<br>"; 


    $systemdate = new \DateTime(); 
    echo "Check 2: ".$systemdate->format(\DateTime::ISO8601)."<br>"; 

    $interval = $dirty_date->diff($systemdate); 
    echo "check 3: ".$interval->format("%R%a days"); 

連結DateInterval($間隔VAR)格式http://php.net/manual/en/dateinterval.format.php

+0

經過一些修改,這個作品!我的整數日期是$ dirty_date。所以我將$ dirty_date換成了「你的整數日期」,並將你所有的$ dirty_date變量重命名爲其他內容。我沒有使用格式的日期,所以我需要更深入地研究你在這裏做了什麼。我的下一步是,我必須將日期調整爲4小時,但我相信我應該能夠弄清楚。非常感謝您的幫助! – Mike

+0

如果我的答案幫助了你,請接受它。謝謝 –

1

首先,沒有被定義$newdate。其次,$dirty_date當前必須是DateTime對象,它只是一個整數。我會假設你要比較$dirty_date$systemdate

試試這個:

$dirty_date_obj = new DateTime(); 
$dirty_date_obj->setTimestamp((int) $dirty_date); 

$system_date_obj = new DateTime(); 
$system_date_obj->setTimestamp((int) $systemdate); 


echo "interval between dirty and system: ".$dirty_date_obj->diff($system_date_obj)->format('%a Days and %h hours'); 

也請在你的代碼的開頭鍵入此看到錯誤消息,所以它不只是一個空白頁,如果一些發生錯誤:

error_reporting(E_ALL); ini_set('display_errors', '1'); 
+0

@Murila謝謝。這與我一直在嘗試的方式完全不同。我需要研究你在那裏做了什麼。這會運行並返回:髒和系統之間的時間間隔:17254天和10小時。問題是,我預計這兩個日期時間可能會有幾小時的差異。從整數轉換爲日期時發生了什麼奇怪的事情? – Mike

+0

@Mike我編輯了答案。我在$ system_date_obj上添加了一個新行,請嘗試。我使用您在Check1和Check2上提供的整數對其進行了測試,並獲得了0天和6小時。這是你期望的結果嗎? – Murilo

+0

是的,6個小時似乎是正確的。我開始使用這個。我對變量名進行了一些更改,由於我的系統時間很緊張(出於某種原因),我需要將系統時間調整-4小時。這是我的代碼這樣做。它運行。開始和結束的時間是合適的,但是當它不同時,它會說45分鐘,實際應該是大約360分鐘。 – Mike

相關問題