PHP在一段时间前发布,基于凌晨12:00

PHP在一段时间前发布,基于凌晨12:00,php,date,datetime,Php,Date,Datetime,我有一个自定义新闻模块,其中有发布日期。我想根据发布日期显示几个小时前发布的内容。假设发布时间是08.00 PM,现在是09.00 PM,那么我想显示1小时前发布的内容。但是在同一天晚上11点59分之后,我需要显示发布的日期。直到晚上11点59分,它应该显示“张贴4小时前”在晚上11点59分后,我需要显示张贴日期 如何根据午夜12.00 AM时间计算time ago函数?我使用了下面的代码,但它总是从发布的日期和时间算起24小时 $time = time() - $postedTime; $ti

我有一个自定义新闻模块,其中有发布日期。我想根据发布日期显示几个小时前发布的内容。假设发布时间是08.00 PM,现在是09.00 PM,那么我想显示1小时前发布的内容。但是在同一天晚上11点59分之后,我需要显示发布的日期。直到晚上11点59分,它应该显示“张贴4小时前”在晚上11点59分后,我需要显示张贴日期

如何根据午夜12.00 AM时间计算time ago函数?我使用了下面的代码,但它总是从发布的日期和时间算起24小时

$time = time() - $postedTime;
$time = ($time<1)? 1 : $time;
$tokens = array (
    31536000 => 'Year',
    2592000 => 'Month',
    604800 => 'Week',
    86400 => 'Day',
    3600 => 'Hour',
    60 => 'Minute',
    1 => 'Second'
);

foreach ($tokens as $unit => $text) {
    if ($time < $unit) continue;
    $numberOfUnits = floor($time / $unit);

    if($time>86400) {
        return date('d.m.Y', $timestamp);
    } else{
       return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
    }
}
$time=time()-$postedTime;
$time=($time‘年’,
2592000=>“月”,
604800=>“一周”,
86400=>“天”,
3600=>“小时”,
60=>“分钟”,
1=>“秒”
);
foreach($unit=>$text形式的令牌){
如果($时间<$单位)继续;
$numberOfUnits=楼层($time/$unit);
如果($time>86400){
返回日期('d.m.Y',$时间戳);
}否则{
返回$numberOfUnits.'.$text.($numberOfUnits>1)?'s':'';
}
}

我稍微编辑了一下您的代码

$postedMidNight = strtotime('midnight '.date('y-m-d',$postedTime))+ 86400 ;
foreach ($tokens as $unit => $text) {
    if ($time < $unit)
        continue;
    $numberOfUnits = floor($time / $unit);

    if (time() > $postedMidNight) {
        return date('d.m.Y', $timestamp);
    } else {
        return $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
    }
}
$postedMidNight=strottime('midnight')。日期('y-m-d',$postedTime))+86400;
foreach($unit=>$text形式的令牌){
如果($时间<$单位)
继续;
$numberOfUnits=楼层($time/$unit);
如果(time()>$postedMidNight){
返回日期('d.m.Y',$时间戳);
}否则{
返回$numberOfUnits.'.$text.($numberOfUnits>1)?'s':'';
}
}

谢谢。此代码将根据午夜时间工作。这似乎和我使用的代码一样。我编辑我的代码,我会得到postdate的午夜和+1天到凌晨12点,然后与现在比较。我想我们最好用DateTime嗨,谢谢。似乎这就是我需要的。一旦答案被证实,我就接受。非常感谢,Np阿伦。很高兴帮助你