2011-09-28 68 views
4

的PayPal按以下格式發送回PAYMENT_DATE場19時19分09秒2011年9月27日貝寶完成的日期格式

我使用PHP來計算PAYMENT_DATE餘下的日子,但我的代碼是基於越來越格式在2011-09-27 12:19:00。

我該如何更改?

這是我的代碼(這完美地工作,如果日期在我正確的格式):

<?php  
$today = time(); 
$cdate = strtotime('2011-09-27');//strtotime($row_details['payment_date']);// testing 
$dateDiff = $today - $cdate; 
$fullDays = floor($dateDiff/(60*60*24)); 
$dayscalculate = 30 - $fullDays; // Set number of days 
echo $dayscalculate.(($dayscalculate == 1) ? " day" : " days"); 
?> 

謝謝

+1

什麼問題? 'strtotime(「2011年9月27日19:19:09」)'應該和你的測試值一樣好'strtotime('2011-08-21')' –

+0

嗯..讓我測試.. – user718359

+0

完美..不知道會接受這種格式..謝謝..放入答案,並會接受..也很容易將PayPal PST時區更改爲澳大利亞?所以得到正確的澳大利亞時間等。 – user718359

回答

6

這裏應該沒有問題。 strtotime()將接受PayPal的格式爲:

strtotime("19:19:09 Sep 27, 2011") 

只要確保你有正確的時區在php.ini中設置,或與date_default_timezone_set()

+0

實際上,strtotime會根據指定的時區(本例中爲PDT)進行調整,將其轉換爲UTC時間戳,並設置默認時區在此處無用。 – Geoffrey

+0

@Geoffrey許多PHP安裝在php.ini中爲'date.timezone'分配一個空值,所以沒有「默認」可以重新使用。然後PHP發出一個'E_WARNING',其效果如下:_PHP警告:strtotime():依靠系統的時區設置是不安全的。您*必須*使用date.timezone設置或date_default_timezone_set()函數._這就是爲什麼它在我的答案中提到,以防OP沒有設置它。 –

+0

......並且OP在評論中詢問了如何設置時區,這意味着它在系統範圍內沒有正確設置。 –

6
<?php 
$end = date('Y-m-d H:i:s', strtotime("03:49:26 27 May 2013 PDT")); 
echo $end; 
?> 

結果運行時間:2013年5月27日11: 49:26