我正在寻找一种简单的方法来获取自日期时间以来的分钟数。我尝试了多种想法,但格式与预期的格式不同,dd/mm/yyyy hh:mm:ss
(例如18/05/2018 15:00:11)。我尝试将字符串转换为正确格式的日期,但它仍然失败。
有什么想法吗?
答案 0 :(得分:0)
当我执行以下代码时:
<?php
echo strtotime(str_replace("/", "-", "18/05/2018 15:00:11");
?>
我明白了:
1526670011
这样,尝试使用日期和时间的正常语法,并以这种方式获得两次:
<?php
echo strtotime(str_replace("/", "-", "18/05/2018 14:00:00"));
echo "<br />";
echo strtotime(str_replace("/", "-", "18/05/2018 15:00:00"));
echo "<br />";
echo strtotime(str_replace("/", "-", "18/05/2018 15:00:00")) - strtotime(str_replace("/", "-", "18/05/2018 14:00:00"));
?>
你会在几秒钟内完成。
1526666400
1526670000
3600
将它们除以60,将它们转换为分钟。
<?php
$start = "18/05/2018 14:00:00";
$end = "18/05/2018 15:00:00";
echo strtotime(str_replace("/", "-", $start));
echo "<br />";
echo strtotime(str_replace("/", "-", $end));
echo "<br />";
echo strtotime(str_replace("/", "-", $end)) - strtotime(str_replace("/", "-", $start)) . " seconds";
echo "<br />";
echo (strtotime(str_replace("/", "-", $end)) - strtotime(str_replace("/", "-", $start)))/60 . " minutes";
你会得到类似的东西:
1526666400
1526670000
3600 seconds
60 minutes
希望这有帮助。
答案 1 :(得分:0)
查看Carbon,这将是您最后一次需要的api扩展程序。你可以使用 - &gt; diffForHumans();选择和大量其他事情,如果你处理时间和日期很多,将使你的生活更轻松。
答案 2 :(得分:0)
只需使用DateTime::createFromFormat():
作为一个单行:
echo floor(((new DateTime())->getTimestamp() - DateTime::createFromFormat('d/m/Y H:i:s', '18/05/2018 15:00:11')->getTimestamp()) / 60);
或者更容易理解的东西 - 评论:
// your timestring in d/m/Y H:i:s format
$myTimeString = '18/05/2018 15:00:11';
// convert your timestring to a DateTime object
$myDateTime = DateTime::createFromFormat('d/m/Y H:i:s', $myTimeString);
// create a DateTime object for "now"
$now = new DateTime();
// use the timestamps to create a difference, in seconds
// between now and your DateTime
$diff = $now->getTimestamp() - $myDateTime->getTimestamp();
// convert it to whole minutes (rounded down) and echo out
echo floor($diff / 60);
你也可以使用DateTime::diff(),但这会给你一个代表差异的DateInterval对象,而不仅仅是总分钟数。