这在很大程度上取决于你的日期首先是如何存储在元值中的。通常,将日期存储在MySQL中作为MySQL日期/时间戳是一个好主意。
MySQL时间戳的格式为Y-m-d h:i:s
.
然而,使用WP自己的日期管理功能总是一个好主意。因此,要以MySQL格式获取当前日期,请使用current_time(\'mysql\')
.
要格式化MySQL日期以供显示,请使用mysql2date($format, $mysql_date)
.在这种情况下,最好显示设置中配置的日期,因此使用$format = get_option(\'date_format\');
.
要存储用户选择的日期,必须将其转换为MySQL日期。要做到这一点,最简单但不是最安全的方法是date(\'Y-m-d h:i:s\', $unix_timestamp);
. $unix_timestamp
通常可以通过strtotime($user_input)
.
然而strtotime()
它本身不进行健全性检查,所以最好编写自己的对话函数。
至于获取月份范围,我使用以下函数获取任何MySQL时间戳的月份边界:
function get_monthrange($time) {
$ym = date("Y-m", strtotime($time));
$start = $ym."-01";
$ym = explode("-", $ym);
if ($ym[1] == 12) {
$ym[0]++; $ym[1] = 1;
} else {
$ym[1]++;
}
$d = mktime( 0, 0, 0, $ym[1], 1, $ym[0] );
$d -= 86400;
$end = date("Y-m-d", $d);
return array( $start, $end );
}
如果你想获得周边界,WP已经提供了一个函数:
get_weekstartend($time);
, 它还以数组的形式提供边界。
然后,您可以在meta_query
通过两次单独的比较进行论证。