【问题标题】:PHP Bookings System - Calculate Time Giving Wrong ResultPHP 预订系统 - 计算时间给出错误的结果
【发布时间】:2016-08-26 05:21:02
【问题描述】:

我正在开发一个简单的汽车租赁系统的 uni 项目。我的问题是在计算时间(租车的天数和小时数)时出现的

现在时间(我在哪里)是下午 12:15

代码:

        //Test Variables
         $ciDate = '2016-08-28';
         $ciTime = '13:10';

        //calc Time
        $calcDate = $ciDate.$ciTime;        
        $calcDate =  strtotime($calcDate);
        $remaining = $calcDate - time();
        $days_remaining = floor($remaining / 86400);
        $hours_remaining = floor(($remaining % 86400) / 3600);
        $totPrice = $days_remaining * 4;
        //Disp Result
        echo $days_remaining. ' Days and ' . $hours_remaining. ' hours';

我的问题

当上面的代码被执行时,我回来了 2 天 5 小时,考虑到 我现在的时间是 2016 年 8 月 26 日下午 12:15,这是不正确的

我要在这里冒险并猜测问题是由于服务器时间与我当前时间不同造成的?

任何关于如何解决上述问题的建议,非常感谢。

编辑:

在撰写本文时,正确的结果应该是 2 天 1 小时

【问题讨论】:

  • 您在哪个时区工作?
  • 只需检查您的date('H:i', time()),然后设置您的时区。
  • 考虑使用 stackoverflow.com/a/3923228/208809 而不是您当前的方法来避免 DST 问题。

标签: php


【解决方案1】:

我不知道您所在的时区,但您的服务器似乎位于不同的时区。
你有很多方法可以解决这个问题,但这里是 code 方法。

date_default_timezone_set ( string $timezone_identifier );

所以如果你在巴格达,你就放

date_default_timezone_set("Asia/Baghdad");

或者无论你在哪里。

查看此链接http://php.net/manual/en/timezones.asia.php

【讨论】:

  • Asia/Bangkok =)
  • @vp_arth 你怎么知道..?
  • 当我设置 date_default_timezone_set("Asia/Bangkok") 时,我会返回 2 天 0 小时...?
  • 试试date_default_timezone_set("Etc/GMT+6");
猜你喜欢
  • 2015-04-05
  • 2020-10-17
  • 2021-02-13
  • 2012-03-27
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
相关资源
最近更新 更多