Php 日期时间错误

Php 日期时间错误,php,datetime,timestamp,Php,Datetime,Timestamp,我正在创建通知系统,这里有一个任务:获取发送通知的时间。我的意思是:1分钟前,13小时前等等。我已经写了一个剧本,但它显示了错误的时间。例如,不是显示“5分钟前”,而是显示“9小时前”。这是议事规则: 从数据库中获取旧的时间戳。旧时间戳是 已发送通知 获取当前用户的时间戳 了解他们之间的差异 回声结果 以下是PHP代码: $fromdb = '1503737539'; //For this example think, that this variable is from database.

我正在创建通知系统,这里有一个任务:获取发送通知的时间。我的意思是:1分钟前,13小时前等等。我已经写了一个剧本,但它显示了错误的时间。例如,不是显示“5分钟前”,而是显示“9小时前”。这是议事规则:

  • 从数据库中获取旧的时间戳。旧时间戳是 已发送通知
  • 获取当前用户的时间戳
  • 了解他们之间的差异
  • 回声结果
  • 以下是PHP代码:

    $fromdb = '1503737539'; //For this example think, that this variable is from database. 
    //This timestamp was created 5 minutes earlier, so in result it should show '5 minutes ago'.
    
        $curr = new DateTime();
        $got2 = new DateTime(date('Y-m-d H:i:s',$fromdb));
        $interval = $curr->diff($got2);
        echo $interval->format('%d')." days ".$interval->format('%h')." Hours ".$interval->format('%i')." Minutes ".$interval->format('%s')." Seconds";
    
    输出为:

    0天9小时

    而不是

    0天0小时5分钟

    我怎样才能解决这个问题?我想这是时区的问题。但我怎么能猜出客人的时区呢

    更新: 更改代码: $got2=新日期时间(日期('Y-m-d H:i:s',$fromdb))

    有趣的事实是:实际差异越大,它在输出中显示的时间就越短。例如:旧的时间戳是在上午8:00创建的,当前是下午15:00,它在输出中显示0天1小时。

    我认为

    date('Y-m-d',$fromdb)
    
    破坏了你的密码。 试一试

    我想

    date('Y-m-d',$fromdb)
    
    破坏了你的密码。 试一试


    你的代码有错误。您可以设置日期格式,不包括小时、分钟和秒

    $got2 = new DateTime(date('Y-m-d',$fromdb));
    
    试一试


    你的代码有错误。您可以设置日期格式,不包括小时、分钟和秒

    $got2 = new DateTime(date('Y-m-d',$fromdb));
    
    试一试

    试一试

    $date=新的日期时间();echo$date->format('U=Y-m-dh:i:s')

    $date->setTimestamp(1171502725); echo$date->format('U=Y-m-dh:i:s')

    试一试

    $date=新的日期时间();echo$date->format('U=Y-m-dh:i:s')

    $date->setTimestamp(1171502725); echo$date->format('U=Y-m-dh:i:s')


    你的代码有错误。格式化日期,不包括小时、分钟和秒$got2=新日期时间(日期('Y-m-d',$fromdb));try$got2=newdatetime(date('Y-m-dh:i:s',$fromdb))@Dmitry那么什么是正确的方法呢?代码中有错误。格式化日期,不包括小时、分钟和秒$got2=新日期时间(日期('Y-m-d',$fromdb));try$got2=newdatetime(date('Y-m-dh:i:s',$fromdb))@Dmitry那么什么是正确的方法呢?这将时间减少到2小时。但应该是45分钟,因为你的时间戳15037539是4小时前的$fromdb='15037539'$curtime=时间();回声($curtime-$fromdb)/60/60。PHP_EOL;这将时间减少到2小时。但应该是45分钟,因为你的时间戳15037539是4小时前的$fromdb='15037539'$curtime=时间();回声($curtime-$fromdb)/60/60。PHP_EOL;setTimestamp()函数修复了一个问题。此外,改变格式也有帮助。谢谢大家:)setTimestamp()函数修复了一个问题。此外,改变格式也有帮助。谢谢大家:)