PHP, нужно вычесть 12 часов и 30 минут из DateTime - PullRequest
13 голосов
/ 24 апреля 2011

У меня есть переменная PHP DateTime.

Как можно уменьшить или вычесть 12 часов и 30 минут с этой даты во время выполнения PHP?

Ответы [ 7 ]

27 голосов
/ 24 апреля 2011

Вычтите 12 часов и 30 минут из DateTime в PHP:

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

P обозначает период.T обозначает Timespan.

См. DateTime , DateTime :: sub и DateInterval в руководстве по PHP.Вам, конечно, придется установить DateTime на соответствующую дату и время.

3 голосов
/ 25 марта 2014

Попробуйте с помощью:

$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 голосов
/ 24 апреля 2011

Попробуйте 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);
1 голос
/ 23 сентября 2015

попробуйте использовать это вместо

//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)));
0 голосов
/ 23 ноября 2016

Используя просто 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");
0 голосов
/ 24 апреля 2011
0 голосов
/ 24 апреля 2011

Сохраните его в объекте DateTime, а затем используйте метод DateTime::sub, чтобы вычесть временной интервал.

...