我有一个PHP DateTime
变量。
如何在PHP运行时减少或减去此日期的12小时30分钟?
答案 0 :(得分:27)
从PHP中的DateTime减去12小时30分钟:
$date = new DateTime();
$tosub = new DateInterval('PT12H30M');
$date->sub($tosub);
P代表Period。 T代表Timespan。
请参阅PHP手册中的DateTime,DateTime::sub和DateInterval。当然,您必须将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");