【问题标题】:confusion with adding 2 time values添加 2 个时间值的混淆
【发布时间】:2011-08-08 18:27:29
【问题描述】:

基本上这些东西让我很沮丧,我是编程新手,所以如果我问了一个愚蠢的问题,我深表歉意。

我有一个 MySQL time() 存储在我的数据库中。我想将此时间添加到当前时间,以建立目标时间。

$duration 是 06:00:00。 (MySQL时间)

$length = strtotime($duration);

    $timestart = time();

    $target = $length + time();

    // merely to check if im getting correct values.

    echo "</br>duration: ".date('G:i:s', $length)."<br/>";
    echo "current time:".date('G:i:s', $timestart)."<br/>";
    echo "target time:".date('G:i:s', $target)."<br/>";

目前我得到了这个(不是增加 6 小时):

持续时间:6:00:00
当前时间:15:51:44
目标时间:19:51:44

谁能帮我解释一下。

非常感谢,

【问题讨论】:

    标签: php mysql time


    【解决方案1】:

    strtotime 将其转换为 unix 时间戳。它不代表六个小时。它代表今天早上 6 点。您应该使用秒数:

    $duration = '06:00:00';
    $duration_array = explode(':', $duration);
    
    $length = ((int)$duration_array[0] * 3600) + ((int)$duration_array[1] * 60) + (int)$duration_array[2];
    $target = $length + time();
    

    【讨论】:

    • 如何将 MySQL 时间 ($duration) 转换为秒?
    • 这应该可以工作......你得到持续时间字符串的部分并将它们转换为秒。
    • 那不应该是 $duration_array[0] 等等..?
    • 非常感谢!效果很好!我心中的问题,为什么当我这样做时:echo "&lt;/br&gt;duration: ".date('G:i:s', $length)."&lt;br/&gt;"; 结果是 07:00:00 ?而不是 06:00:00。再次感谢!
    • 因为 date 也需要一个 unix 时间戳。如果您像这样使用它,$length 表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。根据您的服务器设置,可以显示任何时间。
    【解决方案2】:

    Strtotime 在那里传播一个日期,例如“今天下午 6 点”,而不是您想要的 6 小时。最简单的方法是运行

    time() + (6 * 3600);
    

    其中 6 是小时,3600 是每小时的秒数。

    【讨论】:

    • 但我需要将 MySQL 时间转换为一种格式,以便可以添加它。我该怎么做?
    【解决方案3】:

    我对mySql不太熟悉,不过或许你可以试试

    $target = strtotime($length) + time();
    

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2018-07-22
      相关资源
      最近更新 更多