全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 616|回复: 12
打印 上一主题 下一主题

求改PHP,如何判断是否为当天发表的文章。

[复制链接]
跳转到指定楼层
1#
发表于 2021-5-19 09:40:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. date_default_timezone_set('PRC');
  2. $t1=$post->post_date;
  3. $t2=date("Y-m-d H:i:s");
  4. $diff=(strtotime($t2)-strtotime($t1))/3600;
  5. if($diff<24){echo '<time style="color: #ff921d;">'.get_the_time('Y-m-d').'</time>';} //数字24表示文章发布24小时内的添加标记
  6. else{echo '<time>'.get_the_time('Y-m-d').'</time>';} //如果超过设定的时间则显示为黑色
复制代码


上面这一段,从网上抄的,是目前我放在WordPress搭建的博客里,本意是希望用来判断文章是否是当天发表的,如果是,时间就显示红色,如果过了0点,就显示黑色。奈何不知道怎么改,目前是只能显示24小时内发表是红色,超过了才变为黑色。

2#
发表于 2021-5-19 09:49:08 | 只看该作者
这样? (就是重新改了下日期格式和if的匹配, 能不能跑起来不知道... 偶是代码垃圾)
  1. date_default_timezone_set('PRC');
  2. $t1=date('Y-m-d',$post->post_date); // Post date (Reformatted for Y-m-d)
  3. $t2=date("Y-m-d"); // Today's date
  4. if($t1 < $t2){
  5.         echo '<time>'.get_the_time('Y-m-d').'</time>'; // Red
  6. }
  7. else {
  8.         echo '<time style="color: #ff921d;">'.get_the_time('Y-m-d').'</time>'; // Black
  9. }
复制代码
3#
 楼主| 发表于 2021-5-19 09:52:21 | 只看该作者
ontochom 发表于 2021-5-19 09:49
这样? (就是重新改了下日期格式和if的匹配, 能不能跑起来不知道... 偶是代码垃圾)
...

啊 试了一下 没跑起来
4#
发表于 2021-5-19 09:52:42 | 只看该作者
2楼思路可行,只取 当天日期,判断 day就行了,不要带时分秒。
5#
发表于 2021-5-19 09:57:21 | 只看该作者
EnwenY 发表于 2021-5-18 20:52
啊 试了一下 没跑起来

和4楼说的一样, 大概意思就是 你设定好时区, 然后把 第一个变量改成月日年格式, 直接和今天比较。
第一个变量比第二个变量小: 不是今天, 设置你要的颜色
第一个变量不比第二个变量小: 要么是今天, 要么是你服务器穿越了 设置另外颜色。

我感觉这个如果是在functions.php的话, 应该可以直接用WordPress自己的function get_the_date() + ISO 8601. 这样就不用改来改去了。
6#
 楼主| 发表于 2021-5-19 09:58:16 | 只看该作者
hising 发表于 2021-5-19 09:52
2楼思路可行,只取 当天日期,判断 day就行了,不要带时分秒。

PHP能直接判断日期大小吗?不需要转换成其他的来判断吗?
刚刚试了二楼的,跑起来全部变黑了,
7#
 楼主| 发表于 2021-5-19 10:04:58 | 只看该作者
ontochom 发表于 2021-5-19 09:57
和4楼说的一样, 大概意思就是 你设定好时区, 然后把 第一个变量改成月日年格式, 直接和今天比较。
第 ...

应该不会把
我查询过服务器时间,和电脑时间一致的

点评

设置当天或者更“未来”只是以防万一。 而且对于这个来说, 小于比较好写  发表于 2021-5-19 10:08
8#
发表于 2021-5-19 10:11:41 | 只看该作者
当前日期  $nowDay = date(‘Y-m-d’, time());
文章日期  $artDay = date(‘Y-m-d’, 文章采集时间戳);

if( $nowDay  =  $artDay ) {
    红色
}else{
    黑色
}
9#
发表于 2021-5-19 10:11:49 | 只看该作者
EnwenY 发表于 2021-5-19 09:58
PHP能直接判断日期大小吗?不需要转换成其他的来判断吗?
刚刚试了二楼的,跑起来全部变黑了, ...

可以判断,date(d)取出来的值 直接和 字符都能比较。
10#
 楼主| 发表于 2021-5-19 11:52:04 | 只看该作者
本帖最后由 EnwenY 于 2021-5-19 11:55 编辑
ontochom 发表于 2021-5-19 09:57
和4楼说的一样, 大概意思就是 你设定好时区, 然后把 第一个变量改成月日年格式, 直接和今天比较。
第 ...

  1. date_default_timezone_set('PRC'); //设定为北京时间
  2. $t1=date('Y-m-d',$post->post_date); // 获取文章发布日期,并转化为Y-m-d格式
  3. $t2=date("Y-m-d"); // 获取今天日期,时间格式为Y-m-d
  4. if($t1 < $t2){   //如果T1(文章发布日期)小于 T2(今天日期)
  5.         echo '<time style="color: #333333;">'.get_the_time('Y-m-d').'</time>'; // 输出为黑色
  6. }
  7. else {  //如果不是
  8.         echo '<time style="color: #CE0000;">'.get_the_time('Y-m-d').'</time>'; // 输出为红色
  9. }
复制代码


我按照这个思路去改的,按道理应该是正确才对,而且专门针对时间做了样式,不会受到其他样式干扰,但实际出来的是时间全为黑色,包括今日2021-05-19的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-7-7 16:36 , Processed in 0.072954 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表