我在WordPress中使用下面的代码来检查文章是否在15-09-17之前发布,但问题是如果日期大于15,而月份较少,则仍然显示日期更大。例如,如果$pdate为28-08-17,而$mydate为15-09-17,则仍然返回为true。
$pdate = strtotime(get_the_date("d-m-y"));
$mydate = strtotime('15-09-17');
if ($pdate>$mydate)
{
//do something
}
else {
//do something
}发布于 2017-09-20 18:31:45
它把你的第一个数字(也就是28和15)解释为一年。
来自strtotime()手册:
但是,如果年份以两位数字格式给出,且分隔符为破折号(- ),则日期字符串被解析为y-m-d。
尝试使用四位数的年份,这样它就不会以一种不受欢迎的方式解析日期字符串:
$pdate = strtotime(get_the_date("d-m-Y"));
$mydate = strtotime('15-09-2017');
if ($pdate>$mydate)
{
//do something
}
else {
//do something
}发布于 2017-09-20 18:50:03
您已经使用$pdate指定了d-m-y格式;但是,$mydate遵循在Settings > General中设置的格式。确保这两种格式匹配,以进行正确的比较。
为了澄清,让代码在您的设置中反映日期格式。假设您希望帖子中的日期显示为:September 20, 2017,即F j, Y。您的代码将是:
$pdate = strtotime(get_the_date('F j, Y'));
$mydate = strtotime('September 15, 2017');
if ($pdate>$mydate)
{
//do something
}
else {
//do something
}发布于 2019-11-14 09:32:13
对于新的更新,工作代码如下:
<?php
$pdate = get_post_timestamp();
$mydate = time();
if ($pdate < $mydate) {
echo 'Do something';
} else {
echo 'Do something else';
}更多信息请访问Wordpress 5.3 -日期/时间改进
https://stackoverflow.com/questions/46328989
复制相似问题