#php #datetime #date
#php #datetime #Дата
Вопрос:
У меня есть DateTime
переменная PHP.
Как я могу уменьшить или вычесть 12 часов и 30 минут из этой даты во время выполнения PHP?
Комментарии:
1. если это mysql, я бы использовал DATE_SUB()
2. Вы рассматривали вариант выбора ответа?
Ответ №1:
Вычтите 12 часов и 30 минут из DateTime в PHP:
$date = new DateTime();
$tosub = new DateInterval('PT12H30M');
$date->sub($tosub);
P обозначает период. T обозначает промежуток времени.
Смотрите DateTime, DateTime::sub и DateInterval в руководстве по PHP. Вам, конечно, придется установить DateTime
соответствующие дату и время.
Ответ №2:
Попробуйте с:
$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:
Попробуйте strtotime()
функцию:
$source_timestamp=strtotime("Сб, 30 Апр2011 05:00:00 -0400"); $new_timestamp=strtotime("-12 часов 30 минут", $source_timestamp); вывести дату('r', $new_timestamp);
Ответ №4:
Возможно, это будет полезно в некоторых случаях
$date = new DateTime();
$date->modify('-12 hours -30 minutes');
echo $date->format('H:i:s');
Ответ №5:
попробуйте использовать это вместо
//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)));
Ответ №6:
Если вы не очень знакомы со спецификацией DateInterval, такой как PT12H30M, вы можете использовать более понятный для человека способ, используя 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'));
Ответ №7:
Сохраните его в DateTime
объекте, а затем используйте DateTime::sub
метод для вычитания временного интервала.
Ответ №8:
Я использовал в одной строке, только для 12 часов, и просто как отображение часа
$date = new DateTime(); $date->modify('-12 hours'); echo $date->format('H')-0;
Я использовал -0, поскольку иногда перед цифрой ставится 0, если я этого не сделал, странно.
Ответ №9:
Комментарии:
1. В данном случае это не очень помогает. Он действительно должен использовать
DateTime
объект.2. да, обновил его.. на самом деле я видел несколько вопросов от него здесь и там по datetime object, так что это будет удобно для него.
Ответ №10:
Используя просто 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");