PHP 从 0/0/0 计算日期间隔 00:00:00

PHP calculate date interval from 0/0/0 00:00:00

我需要计算持续时间并使其易于阅读。 例如我有一个字符串:“2 天 4 小时”。我需要我的代码来计算该字符串的持续时间作为时间戳并使其易于阅读。

我的问题是,如果我将时间戳添加到 0,它从 1/1/1970 开始,但我需要它来计算持续时间。

我试图将 1/1/1970 01:01:00 减去 0 但在计算时 returns 一个毫无意义的结果。

如果我没理解错的话,你想转换如下内容:

$dateString = "2 days 4 hours";

到时间戳?

如果是这样,而且你知道总会有 days/hours 你可以这样做:

$dateString = "2 days 4 hours";
preg_match_all('!\d+!', $dateString , $numbersOnly);
$partialTimeStamp= (($numbersOnly[0][0]*24)+$numbersOnly[0][1])*3600;
print_r($partialTimeStamp); // will print 187200

有了这个,你将有数秒的时间。例如,如果你的字符串中也有分钟,你会这样做:

$dateString = "2 days 4 hours 15 minutes";
preg_match_all('!\d+!', $dateString , $numbersOnly);
$partialTimeStamp= (($numbersOnly[0][0]*24)+$numbersOnly[0][1])*3600 + $numbersOnly[0][2]*60;
print_r($partialTimeStamp); // will print 188100

使用这个部分时间戳,您可以计算下一个时间戳,例如:

$nextTimeStamp = time () + $partialTimeStamp;
print_r($nextTimeStamp);

编辑:错过了 "back to human readable" 部分.. 为此,您可以执行以下操作:

$days = floor($partialTimeStamp/ 86400);
$partialTimeStamp = $partialTimeStamp - $days*86400;
$hours = floor($partialTimeStamp/ 3600);
$min = floor($partialTimeStamp/ 60 % 60);

不仅如此:

print_r($days." days ".$hours." hours ".$min. " minutes");// will output 2 days 4 hours 15 minutes 

希望对您有所帮助。

BR