2011-05-24 94 views
1

我正在使用日期選擇器來存儲用戶選擇的unix/PHP時間戳。PHP日期(ymd)比較錯誤

我剛剛注意到,在我試圖打印$current_date並將其與$_date_compare進行比較...僅供參考這是WordPress代碼,但問題與WordPress無關。

所以,這被說這裏是相關的代碼片段:

$current_date = date('ymd'); 
$recentPosts = new WP_Query(); 
$recentPosts->query(array(
    'category_name' => 'events', 
    'meta_key' => '_date_compare', 
    'meta_compare' => '>=', 
    'meta_value' => $current_date, 
    'orderby' => 'meta_value', 
    'order' => 'ASC', 
    'posts_per_page' => 99 
)); 

出於某種原因,結果爲2005年1月1日是打印50101(離開了前導零,這混淆了我,因爲我使用date('ymd');格式的日期

儘管如此,經過一些仔細的想法,我意識到這是一個非問題,我試圖排序所有事件的值比$current_date高,但查詢返回Jan 01 2005年在HIGHER的日期比$current_date查詢。

在寫這篇文章時,今天是 date('ymd')格式。爲什麼在我的查詢中返回,該查詢檢查的值是高於而不是110523?!

編輯你可以在這裏查看問題:http://anasmadance.com/past-events-2/ - 略高於盒意思是ymd格式的日期,這是早期的日期正確打印的數字,但不正確的那些在底部該頁面(應該從查詢中省略,因爲它們已經過去,因此小於它們的比較值)

+0

你試過將類型的值轉換爲int嗎? – 2011-05-24 02:18:20

+0

PHP可能會轉換爲數值並修剪前導零,但在一個示例中,它似乎不會自動執行此操作。 http://codepad.org/ePpg7Cuf – 2011-05-24 02:19:49

+0

你嘗試過''meta_value'=>「$ current_date」嗎? – 2011-05-24 02:22:15

回答

0

我不知道這是否對您有幫助。我需要查看並執行幾次調試才能知道發生了什麼,但這裏是我通過Google搜索發現的

嘗試用$ wp_query替換$ recentPosts並告訴我們結果如何。我知道這看起來很傻,但是這是我發現這裏聲稱: http://wordpress.org/support/topic/wp_query-amp-pagination-not-working?replies=11 這裏: http://wordpress.org/support/topic/custom-wp_query-with-paged

如果沒有工作,可以請你的var_dump後$ CURRENT_DATE權,並讓我們知道結果。

+0

感謝!你上面的例子涉及WordPress的分頁,但我的查詢不使用分頁。今天是2011年5月24日,'var_dump()'的結果是'110524 – Brian 2011-05-24 17:00:00

+0

你能發佈var_dump的全部結果,比如string(6)「110524」或者(int).. etc – 2011-05-25 05:01:11