php - PHP 从 0/0/0 00:00:00 计算日期间隔
问题描述
我需要计算持续时间并使其易于阅读。例如,我有一个字符串:“2 天 4 小时”。我需要我的代码将该字符串的持续时间计算为时间戳并使其易于阅读。
我的问题是,如果我添加时间戳0
,它从 1970 年 1 月 1 日开始,但我需要它来计算持续时间。
我尝试将 1/1/1970 01:01:00 减去,0
但在计算时返回一个无意义的结果。
解决方案
如果我对您的理解正确,您想转换如下内容:
$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
推荐阅读
- vue.js - 修改@selection事件回调后,Quasar的QTable选择行不更新
- security - Webhook 侦听器/接收器安全性
- go - 使用 Go 通过 GCP 发布/订阅设置 Gmail 推送通知
- python - OpenCV 搜索 сontours
- c++ - C ++:如何从k = 2 ^ a * b中找到a和b?
- javascript - 未定义属性上的 javascript eval 表达式
- python - AJAX 无法在 Django 中定义键的方法
- templates - PhpStorm 使用变量内的变量创建实时模板
- python - 根据另一个数组中 argmax 的索引从数组中选择值
- c# - Visual Studio 中的数据库问题(c# 和 SQL Server)