【问题标题】:PHP posted time ago based on midnight 12.00 AMPHP 基于午夜 12.00 AM 发布的时间前
【发布时间】:2018-03-05 04:55:11
【问题描述】:

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

如何根据午夜 12:00 时间计算前时间函数?我使用了以下代码,但它总是从发布的日期和时间开始计算 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】:

    我稍微修改了你的代码。

    $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' : '');
        }
    }
    

    【讨论】:

    • 谢谢。此代码是否将根据午夜时间工作。这似乎与我使用的代码相同。
    • 我编辑了我的代码,我将得到 postdate 的午夜和 + 1 天到凌晨 12 点,然后将其与现在进行比较。我认为我们最好使用 DateTime()
    • 嗨,谢谢。似乎这就是我需要的。验证后我会接受答案。非常感谢。
    • Np 阿伦。很高兴为您提供帮助
    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多