自定义字段的日期比较问题

时间:2011-11-11 作者:darren

这个问题来自:https://wordpress.stackexchange.com/questions/11390/can-you-do-a-date-comparison-on-a-custom-field-and-query-two-or-more-custom-taxo

还有一件类似的事情:https://stackoverflow.com/questions/7080352/multiple-custom-fields-stored-as-meta-keys-how-to-connect-with-the-post/

我正在尝试比较一个开始日期和结束日期,这是一个使用jquery日期选择器和dateFormat设置的post类型的展览中的自定义字段:“dd-mm-yy”

$today = date(\'Y-m-d\', strtotime(\'-6 hours\'));      
$args = array(
    \'showposts\' => 1,
    \'orderby\' => rand,
    \'post_type\' => \'exhibition\',
    \'meta_query\' => array(
        relation\' => \'AND\',
        array(
        \'key\' => \'startDate\',
        \'type\' => \'CHAR\',
        \'value\' => $today,
        \'compare\' => \'>=\'
         ),
        array(
        \'key\' => \'endDate\',
            \'type\' => \'CHAR\',
            \'value\' => $today,
            \'compare\' => \'<=\'
             ),
   )
);
我不明白的是,这是如何保存到元数据中的——大概是CHAR类型,以及为什么我的查询似乎无法正常工作

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

这是:

date( \'Y-m-d\', strtotime(\'-6 hours\') );
会吐出类似的东西2011-11-11

如果日期选择器使用的是dd-mm-yy, 那么比较两者是行不通的。dd-mm-yy, 如果是后期保存/更新时字段中的内容,那么将保存为meta_value.

元值可能会保存为字符串,这很好——您仍然可以进行日期比较,但格式必须匹配。有几个选项可以解决此问题:

在将日期保存到数据库之前,请将日期转换为unix时间戳--使用strtotime -- 在前端执行相反操作:date( \'F, j Y\', $some_time_saved_in_db ); 向用户显示日期。比较时间戳应该是最可靠的使用ISO标准日期格式保存字段,YYYYMMDD, 这在比较/排序日期方面非常有效

结束

相关推荐

在_content周围的<p>标记内添加_date

我正在尝试获取它,以便我的所有帖子都在帖子内容的开头显示日期,这样每个帖子的开头都是:“8月28日-Lorem ipsum dolor sit amet…”但是,如果代码只是:<?php the_time(\'F j - \'); ?><?php the_content(\'Read More\'); ?> 然后,由于Wordpress会自动在\\u内容周围添加p标记,因此最终会在日期和其余内容之间显示一个换行符:“8月28日-Lorem ipsum dolor sit