【发布时间】:2015-07-24 03:12:57
【问题描述】:
我有一个自定义字段,附加到自定义帖子 自定义帖子是个人资料(用户)自定义字段的日期,存储为 unix 时间戳。
我是这样评价的:
function born_today_func( $atts ) {
extract(shortcode_atts(array(
'birthday' => get_post_meta(get_the_ID(), 'wpcf-your_cf_slug', true),
), $atts)
);
if((date('d', strtotime($birthday)) == date('d')) && (date('m', strtotime($birthday)) == date('m'))){
return 1;
}else{
return 0;
}
}
add_shortcode( 'born-today', 'born_today_func' );
我是否将其用作短代码、函数或其他任何东西都没有关系:
if((date('d', strtotime($birthday)) == date('d')) && (date('m', strtotime($birthday)) == date('m')))
没有用当前日期正确评估自定义字段的日期。
我今天有以下结果:
个人资料 1
12/05/08
第二个人
11/05/08
第三个人
01/05/15
但显然只有 12/05 (Profile 1) 应该被回显。
值得一提的是,这不是我唯一的个人资料,但不会返回所有其他日期
(例如 13/05/08 不返回)
我做错了什么?
如何正确检查 dd/mm 的 UNIZ TIMESTAMP 并仅在 dd/mm 与 TODAY 对应时输出?
我对包括 2 月 29 日不感兴趣,那完全是另一回事。
我的代码是正确的,它评估的是 SOMETHING,但不是应该的。
希望有人能帮忙。
仅供参考: 这将返回与我上面的代码完全相同的结果:
$birthDate = get_post_meta(get_the_ID(), 'wpcf-birthday', true);
$time = strtotime($birthDate);
if(date('m-d') == date('m-d',$time)) {
return 1;
}else{
return 0;
}
Luke 建议的其他信息:
var_dump 返回:
$出生日期:
string(10) "1210550400" string(10) "1421020800" string(10) "1210464000" string(10) "1430438400"
$时间:
int(-49532903345) bool(false) int(64072123846) int(202922721043)
不确定我现在能用它做什么?
不管这里所有(肯定)有用的 cmets 和答案,解决方案都简单得多。只是不要转换。
此代码将按预期完成工作:
function born_today_func( $atts ) {
extract(shortcode_atts(array(
'birthday' => get_post_meta(get_the_ID(), 'wpcf-birthday', true),
), $atts)
);
if(((date('d', $birthday)) == date('d')) && (date('m', $birthday)) == date('m')){
return 1;
}else{
return 0;
}
}
add_shortcode( 'born-today', 'born_today_func' );
【问题讨论】:
-
相关:stackoverflow.com/questions/3873649/… 。尝试在整个过程中使用
var_dump()s 来找出相同/不同的地方? -
为什么有两个单独的日期函数而不是 date('md') ?
-
因为如您所见,它们只是 2 个示例。如果我执行 date(md) 或 date(m) 和 date(d) 两次返回混合结果我会尝试你建议卢克的事情,但我不明白这应该如何解决这个相对奇怪的事情跨度>
-
卢克,我已经读过那篇文章,但它并没有解决这种情况。事实上,那里的代码根本不起作用
-
var_dump for $birthDate 返回:
string(10) "1210550400" string(10) "1421020800" string(10) "1210464000" string(10) "1430438400"和 $time 的 var_dump 显然相同:` string(10) "1210550400" string(10) "1421020800" string(10) "1210464000" string( 10)“1430438400”`不确定我现在能用它做什么?
标签: php date timestamp evaluate