PHP发布时间早于12:00 AM

问题描述 投票:0回答:1

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

如何根据午夜12点的时间计算前一段时间的功能?我使用了以下代码,但它总是从发布的日期和时间计算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':'');
    }
}
php date datetime
1个回答
1
投票

我稍微编辑了你的代码。

$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' : '');
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.