添加分钟到当前时间

时间:2013-07-19 15:28:04

标签: php date

我正在尝试将分钟添加到当前日期,但它会返回奇怪的结果

date_default_timezone_set('Asia/Karachi');

$currentDate = date("m-d-Y H:i:s");
$currentDate_timestamp = strtotime($currentDate);
$endDate_months = strtotime("+10 minutes", $currentDate_timestamp);
$packageEndDate = date("m-d-Y H:i:s", $endDate_months);

echo " <br> " . $packageEndDate . " <br> ";
echo $currentDate;

我正在获得输出

01-01-1970 05:50:00
07-19-2013 20:25:23

它应该返回

07-19-2013 20:35:23
07-19-2013 20:25:23

在此之后我需要查询数据库,因此日期格式应该相同。数据库列是字符串类型。

5 个答案:

答案 0 :(得分:9)

您的代码是多余的。为什么要将时间戳格式化为字符串,然后将该字符串转换回时间戳?

尝试

$now = time();
$ten_minutes = $now + (10 * 60);
$startDate = date('m-d-Y H:i:s', $now);
$endDate = date('m-d-Y H:i:s', $ten_minutes);

代替。

答案 1 :(得分:1)

可能极简主义的方式是:

date_default_timezone_set('Asia/Baku');

$packageEndDate = date('Y-m-d H:i:s', strtotime('+10 minute'));
echo $packageEndDate;

输出(撰写本文时我所在城市的当前时间):

2017-07-20 12:45:17

答案 2 :(得分:0)

巴基斯坦,即明确设置的本地化,使用“DD-MM-YYYY”格式日期,因此当您将日期转换为“MM-DD-YYYY”字符串时会出现问题。巴基斯坦本土化不能解释这种美式日期格式。

如果您仍希望保持往返字符串并返回,请使用DD-MM-YYYY或ISO日期时间格式。

虽然这是实际解释原始问题的唯一(当前)答案,但我建议将代码重构为其他人已经证明的。

答案 3 :(得分:0)

试试这个:

$now = time();
$tenMinFromNow = date("m-d-Y H:i:s", strtotime('+10 minutes', $time));

答案 4 :(得分:0)

$tenMinsFromNow = (new \DateTime())->add(new \DateInterval('PT10M'));

将为您留下一个DateTime对象,表示将来10分钟的时间。这将允许您执行以下操作: -

echo $tenMinsFromNow->format('d/m/Y H:i:s');

See it working

PHP版本&gt; = 5.4我很害怕,但你现在至少应该使用该版本。