【问题标题】:PHP calculate date interval from 0/0/0 00:00:00 [closed]PHP从0/0/0 00:00:00计算日期间隔[关闭]
【发布时间】:2019-07-16 11:50:36
【问题描述】:

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

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

我尝试将 1/1/1970 01:01:00 减去 0,但在计算时返回一个无意义的结果。

【问题讨论】:

  • 如果您不发布您编写的代码,我们将无法帮助您
  • 如果时间为零,那么您要测量的时间间隔是多少?你需要澄清你的问题。

标签: php date datetime strtotime duration


【解决方案1】:

如果我对您的理解正确,您想转换如下内容:

$dateString = "2 days 4 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);

编辑:错过了“回到人类可读”部分.. 为此,您可以执行以下操作:

$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

【讨论】:

  • 它非常有帮助,即使它不是确切的解决方案。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2013-07-02
  • 2013-05-31
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
相关资源
最近更新 更多