我正在尝试将分钟添加到当前日期,但它会返回奇怪的结果
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
在此之后我需要查询数据库,因此日期格式应该相同。数据库列是字符串类型。
答案 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');
PHP版本&gt; = 5.4我很害怕,但你现在至少应该使用该版本。