PHP:没有得到正确的日期差异

时间:2016-11-02 08:53:46

标签: php mysql date

我试图通过两个日期来计算持续时间。 这是我的代码:

<?php 
 $start_time = '2016-11-02 14:15:02';
 $end_time= '2016-11-02 14:17:02';
 $diff= strtotime($end_time) - strtotime($start_time);
 $duration   = date("H:i:s", $diff);
?>

所以它显示05:32:00,但实际结果应该是00:02:00。我注意到结果05:30:00添加了。我没有得到它的解决方案。

3 个答案:

答案 0 :(得分:0)

使用__declspec (dllexport) void RegisterCallbacks(char *arg1, char *arg2, char *arg3, char *arg4 ) { void (*CreateAsynEventWithDSMapPtr)(int,int) = (void (*)(int,int))(arg1); int(*CreateDsMapPtr)(int _num,...) = (int(*)(int _num,...)) (arg2); CreateAsynEventWithDSMap = CreateAsynEventWithDSMapPtr; CreateDsMap = CreateDsMapPtr; bool (*DsMapAddDoublePtr)(int _index,char *_pKey,double value)= (bool(*)(int,char*,double))(arg3); bool (*DsMapAddStringPtr)(int _index, char *_pKey, char *pVal)= (bool(*)(int,char*,char*))(arg4); DsMapAddDouble = DsMapAddDoublePtr; DsMapAddString = DsMapAddStringPtr; } 代替gmdate。它返回格式化日期字符串。

date

答案 1 :(得分:0)

您需要设置defualt time_zone。我想你正在使用印度时区。这就是为什么它会减少5.30小时。请参阅以下代码

 date_default_timezone_set("GMT");
 $start_time = '2016-11-02 14:15:02';
 $end_time= '2016-11-02 14:17:02';
 $diff= strtotime($end_time) - strtotime($start_time);
 $duration   = date("H:i:s", $diff);
 echo $duration;

答案 2 :(得分:0)

您可以使用DateTime类来获得差异:

$start_unix = strtotime($start_time);
$end_unix = strtotime($end_time);

var_dump($start_unix, $end_unix);

$diff = $end_unix - $start_unix;
var_dump($diff);

$duration = date("H:i:s", $diff);
var_dump($duration);

Interval是一个对象,它将天,小时,分钟的差异保存为公共属性(http://php.net/manual/de/class.dateinterval.php

编辑: 我刚用一些调试信息检查了你的代码,它似乎开箱即用:

PHP文件     

php -f test.php
/tmp/test.php:9:
int(1478096102)
/tmp/test.php:9:
int(1478096222)
/tmp/test.php:12:
int(120)
/tmp/test.php:15:
string(8) "00:02:00"

控制台输出

var charts = $('.chart > .graph');
charts.each(function(i,graph){
  console.log("Graph: "+ i)
    $(graph).find('.bar').each(function(j,bar){
      console.log("data-cat: "+ bar.getAttribute('data-cat'))
    });
});