2012-02-10 60 views
2

我正在嘗試爲自定義發佈時間獲取簡單的「XX天」(作業)。我試圖在任何地方找到答案,但沒有任何適應性很好,通過互聯網上的例子改變了我的代碼1000次,但我無法解決。剩餘天數以指定日期在php/WordPress中

我的代碼如下所示:

<?php 
$today = date('d/m/Y'); 
$today = strtotime($today); 
$finish = get_field('todate'); 
$finish = strtotime($finish); 
//diference 
$diff = $finish - $today; 
$daysleft=floor($diff/(60*60*24)); 
echo "$daysleft days left"; 
?> 

上$完成get_field( 'TODATE')返回的日期DD/MM/YYYY

任何人誰可以幫我嗎?

謝謝!

+1

您可以執行'$ today = time()'並跳過「毫無意義的」將unix時間戳,格式轉換爲字符串,然後解析回原來的2個代碼行之前的unix時間戳。 – 2012-02-10 19:49:59

+0

@dqhendricks回顯$ daysleft的想法是顯示離結束日期還有多少天。今天$獲得時間並且完成返回完成他們,時間是有一個數字來與之不同。我不知道dd/mm/yyyy不支持。 – Jaypee 2012-02-10 20:21:53

+0

@dqhendricks我設法解決這個問題,代碼是99%正確的,我不得不修正日期到美國類型(毫米/日)它不符合歐洲日期(月/毫米)。答案1的人幫助解決了這個問題。我有點討厭這個,因爲我想顯示相同字段的值,但我不能夠,因爲日期格式將是錯誤的,所以我將不得不有2個輸入爲用戶(出版完成日期和完成日期在歐洲格式)感謝您的幫助。 – Jaypee 2012-02-10 20:58:20

回答

4

問題在於您的$ today和$ finish變量中的d/m/Y(應該是m/d/Y)的安排(有關使用strtotime的有效日期格式的列表,請訪問PHP Date Format頁):

<?php  
    $today = date('m/d/Y'); 
    $today = strtotime($today); 
    $finish = get_field('todate'); 
    $finish = strtotime($finish); 
    //difference 
    $diff = $finish - $today; 

    $daysleft=floor($diff/(60*60*24)); 
    echo "$daysleft days left"; 
?> 

測試和工程,假設$結束日期輸入爲m/d/yyyy的(而不是d /平方米/年)

+0

檢查這個日曆,我使用的是dd/mm/yyyy,因爲在我的國家日期是這樣設置的,而且我在另一個地方顯示了這個字段值,這就是我想要保持dd/mm/yyyy 我會嘗試這並讓你知道,謝謝! – Jaypee 2012-02-10 19:48:48

+0

謝謝 - 我在評論時想到了這一點,所以我添加了有關與strtotime一起工作的日期格式的PHP文檔參考。檢查他們看看哪種格式最適合你。 – 2012-02-10 19:50:13

+0

您可以嘗試使用30-6-2008作爲日期格式(來自[PHP日期格式文檔](http://www.php.net/manual/en/datetime.formats.date.php)) – 2012-02-10 19:52:04

0

這個怎麼樣的功能?

function DayDifference($start, $end) { 
    $start = strtotime($start); 
    $end = strtotime($end); 
    $difference = $end - $start; 
    return round($difference/86400); 
} 
echo DayDifference("2012-02-10", "2012-02-20").' days left'; 
1

strtotime只會按日,月,年格式解析日期,如果值由點,標籤或破折號分隔。見Date Formats

如果你有PHP 5.2或更高版本,可以使用下面的函數來獲得總天數:

<?php 

$today = date('m/d/Y'); 
$today = new DateTime($today); 

$finish = get_field('todate'); // MAKE SURE THIS IS m/d/Y or Y/m/d 
$finish = new DateTime($finish); 

//diference 
$diff = $finish->diff($today); 
$daysleft = $diff->format('%a'); // %a modifier means total days 

echo "$daysleft days left\n"; 

這是考慮到DST和閏年。

+0

我正在使用PHP 5.3.8,但此代碼導致致命錯誤 – Jaypee 2012-02-10 20:03:13

+0

致命錯誤是什麼? – drew010 2012-02-10 20:16:00

+0

感謝提請,我設法通過將日期格式更改爲美國日期格式來解決此問題。現在它運行良好。 – Jaypee 2012-02-10 21:00:03