Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果今天是生日_Php_Date_Timestamp_Evaluate - Fatal编程技术网

Php 如果今天是生日

Php 如果今天是生日,php,date,timestamp,evaluate,Php,Date,Timestamp,Evaluate,我有一个自定义字段,附加到自定义帖子 自定义post是一个配置文件(用户),自定义字段是一个日期,存储为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', strtoti

我有一个自定义字段,附加到自定义帖子 自定义post是一个配置文件(用户),自定义字段是一个日期,存储为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(剖面图1)应该得到回应

值得一提的是,这不是我唯一的个人资料,但所有其他日期都不会返回 (例如,未返回
13/05/08

我做错了什么

如何正确地检查UNIZ时间戳中的dd/mm,并且仅当dd/mm与今天相对应时才输出

我对包括2月29日不感兴趣,那完全是另一回事

我的代码是正确的,它评估了一些东西,但不是它应该评估的确切内容

我希望有人能帮忙

供参考: 这将返回与上述代码完全相同的结果:

$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_转储返回:

$birthDate:

string(10) "1210550400" string(10) "1421020800" string(10) "1210464000" string(10) "1430438400"
$time:

 int(-49532903345) bool(false) int(64072123846) int(202922721043) 
不知道我现在能用它做什么

不管这里有多少(当然)有用的评论和答案,解决方案要简单得多。只是不要皈依

此代码将按预期完成其工作:

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' );

您应该使用
DateTime::createFromFormat()
而不是
strotime
来解析日期。您的日期
12/05/08
看起来模棱两可。

如果有人在寻找简单的解决方案,而不是wordpress,请点击帖子

$birthday = new DateTime("05-28-2020");
$today = new DateTime(date("Y-m-d"));

if ($birthday->format("m-d") == $today->format("m-d")) {
 echo 'Today is your birthday';
} else {
 echo 'Today is not your birthday';
}

相关:。试着自始至终执行
var\u dump()
s,找出哪些地方是相同的/不同的?为什么要使用两个单独的日期函数而不仅仅是日期('md')?因为正如您所看到的,它们只是两个示例。如果我做date(md)或者date(m)和date(d),它都会返回一个混合的结果,我会尝试你建议luke做的事情,但我不知道这应该如何解决这个相对奇怪的问题luke,我已经读过的那篇文章,它不能解决这个问题。事实上,那里的代码根本不能为$birthDate返回值:string(10)“1210550400”string(10)“1421020800”string(10)“1210464000”string(10)“143048400”和$time的var_dump显然是相同的:`string(10)“1210550400”string(10)“1421020800”string(10)“1210464000”string(10)“143048400”`不知道我现在能用它做什么?不知道怎么用这个?由于我不是说英语的人,我也不得不用谷歌搜索“模棱两可”:DBTW,12/05/08只是我决定输出的内容。我可以根据每个短代码属性改变它。问题是,求值d==d和m==m