1

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

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

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

4

5 回答 5

13

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

尝试

$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);

反而。

于 2013-07-19T15:30:32.690 回答
3

可能极简主义的方式是:

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
于 2017-07-20T08:44:15.483 回答
0
$tenMinsFromNow = (new \DateTime())->add(new \DateInterval('PT10M'));

Will leave you with a DateTime object representing a time 10 minutes in the future. Which will allow you to do something like:-

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

See it working

PHP version >= 5.4 I'm afraid, but you should be using at least that version by now anyway.

于 2013-07-19T18:35:31.593 回答
0

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

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

虽然这是唯一(当前)实际解释您的原始问题的答案,但我建议像其他人所展示的那样重构代码。

于 2013-07-19T15:35:35.667 回答
0

尝试这个:

$now = time();
$tenMinFromNow = date("m-d-Y H:i:s", strtotime('+10 minutes', $time));
于 2013-07-19T15:36:51.780 回答