2013-08-27 2 views
-1
$datetime_from = '2013-08-27 14:17:00'; 
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 

Результат:Добавить минут даты и времени строки

$datetime_till = '1970-01-01 01:00:00' 

Ожидаемый результат

$datetime_till = '2013-08-27 15:02' 

Как получить?

+0

http://stackoverflow.com/questions/8169139/adding-minutes-to-date-time-in-php – mkaatman

+0

Является ли $ datetime_from из базы данных? – Cups

ответ

1

Это будет как

$datetime_from = strtotime('2013-08-27 14:17:00'); 
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 

Вы должны преобразовать $datetime_from времени

OrElse вы также можете попробовать, как (Iam не уверен)

$dateTime = DateTime::createFromFormat('m/d/Y h:i', $datetime_from); 
$datetime_from = $dateTime->format('U'); 
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",$datetime_from)); 
+0

Он дает тот же ответ: 1970-01-01 01:45:00 –

+0

Попробуйте также отредактировать ans, но я не уверен, что это будет – Gautam3164

+0

Возможно, проблема в том, что var_dump ($ datetime_from); выходы "'2013-08-27 17:00:00'" –

0

пытаясь угадать
$datetime_till = date("Y-m-d H:i",strtotime("+45 minutes",strtotime($datetime_from))); 
0

Вы должны использовать класс DateTime вместо старого функционального php.

$dateFrom = new \DateTime('2013-08-27 14:17:00'); 
$dateTill = new \DateTime('2013-08-27 14:17:00'); 
$dateTill->modify('+45 minutes'); 

// test if the dates are correct 
echo $dateFrom->format('Y-m-d H:i:s'). ' - '.$dateTill->format('Y-m-d H:i:s'); 

Существует множество других методов, которые вы можете использовать в классе DateTime.

+0

Эта строка не работает: $ datetime_till = new DateTime ($ datetime_from); –

+0

Вероятно, проблема заключается в том, что var_dump ($ datetime_from); выходы "2013-08-27 17:00:00". Но как это исправить? –

+0

добавить обратную косую черту перед DateTime. $ datetime_from должна быть строкой с допустимой датой форматирования. –

0

Вы можете использовать объект DateTime, чтобы сделать это в процедурном стиле PHP, как это:

$datetime_from = date_create('2013-08-27 14:17:00'); // Create a date object from the start date 
$datetime_till = date_add($datetime_from, date_interval_create_from_date_string('45 minutes')); // Add the interval to the starting time 
echo date_format($datetime_till, 'Y-m-d H:i'); // Format the date how you want it to be output 

Надеется, что это помогает.

0
Use: 

$datetime_from = strtotime('2013-08-27 14:17:00'); 

$datetime_till = date("Y-m-d H:i",$datetime_from+(45*60)); 
0

Используйте DateTime класс для модификации Дата/время:

$datetime_from = new DateTime('2013-08-27 14:17:00'); 
$datetime_till = clone $datetime_from; 
$datetime_till->modify('+45 minutes'); 

echo 
    'From: ' . $datetime_from->format('Y-m-d H:i:s') . "\n". 
    'Till: ' . $datetime_till->format('Y-m-d H:i:s'); 

выход будет:

From: 2013-08-27 14:17:00 
Till: 2013-08-27 15:02:00 

modify() Допустимые форматы описаны в Date and Time Formats.


Пожалуйста, обратите внимание, что различные strtotime() примеры не являются правильными в расчете разницы по дате/времени. Самый простой пример - разница между 2013-03-31 21:00 и 2013-03-30 21:00. Что для невооруженного глаза является точной разницей в 1 день, но если вы вычтите эти 2 даты, вы получите 82800 секунд, что равно 0.95833333333333 дням. Это связано с изменением времени от зимы до летнего времени. DateTime обрабатывает високосные годы и временные зоны должным образом.