PHP,需要从DateTime中减去12小时30分钟

时间:2011-04-24 05:37:31

标签: php datetime date

我有一个PHP DateTime变量。

如何在PHP运行时减少或减去此日期的12小时30分钟?

9 个答案:

答案 0 :(得分:27)

从PHP中的DateTime减去12小时30分钟:

$date = new DateTime();
$tosub = new DateInterval('PT12H30M');
$date->sub($tosub);

P代表Period。 T代表Timespan。

请参阅PHP手册中的DateTimeDateTime::subDateInterval。当然,您必须将DateTime设置为适当的日期和时间。

答案 1 :(得分:3)

尝试strtotime()功能:

$source_timestamp=strtotime("Sat, 30 Apr 2011 05:00:00 -0400");
$new_timestamp=strtotime("-12 hour 30 minute", $source_timestamp);
print date('r', $new_timestamp);

答案 2 :(得分:3)

尝试:

$date = new DateTime('Sat, 30 Apr 2011 05:00:00 -0400');
echo $date->format('Y-m-d H:i:s') . "\n";
$date->sub(new DateInterval('PT12H30M'));
echo $date->format('Y-m-d H:i:s') . "\n";

//结果

2011-04-30 05:00:00
2011-04-29 16:30:00

答案 3 :(得分:1)

尝试使用此代替

//set timezone
date_default_timezone_set('GMT');

//set an date and time to work with
$start = '2014-06-01 14:00:00';

//display the converted time
echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));

答案 4 :(得分:1)

如果您对PT12H30M等DateInterval的规格不太熟悉,则可以使用DateInterval :: createFromDateString进行更具人类可读性的方式,如下所示:

$date = new DateTime();
$interval = DateInterval::createFromDateString('12 hour 30 minute');
$date->sub($interval);

或者在子函数中使用直接间隔,如下所示:

$date = new DateTime();
$date->sub(DateInterval::createFromDateString('12 hour 30 minute'));

答案 5 :(得分:0)

将其存储在DateTime对象中,然后使用DateTime::sub方法减去时间跨度。

答案 6 :(得分:0)

也许在某些情况下会有用

$date = new DateTime();
$date->modify('-12 hours -30 minutes');

echo $date->format('H:i:s');

答案 7 :(得分:-1)

答案 8 :(得分:-1)

简单地使用strtotime

echo date("Y-m-d H:i:s",strtotime("-12 hour -30 minutes"));

使用DateTime

$date = new DateTime("-12 hour -30 minutes");
echo $date->format("Y-m-d H:i:s");