我试图通过两个日期来计算持续时间。 这是我的代码:
<?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添加了。我没有得到它的解决方案。
答案 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'))
});
});