2016-09-07 2 views
-2

Когда я увеличиваю значение DateTime на любые часы, результат будет OKAY, но когда я увеличу его на 12 часов, он не увеличивается. DateTime + 12 часов с указанием того же DateTime. Зачем?


Пожалуйста, смотрите следующий код для деталей:



$creation_date = new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata')); 
$expiration_date = new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata')); 

Когда я увеличиваю переменную $expiration_date на 1 час, 3 часа, 8 часов, 24 часов и т.д., результат совершенен. Например,

Случай 1:

$expiration_date->add(new DateInterval('PT1H')); 
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata'); 

Результат 1:

Дата создания: 2016-09-07 06:00:00
Дата окончания: 2016-09-07 7:00 : 00

Случай 2:

$expiration_date->add(new DateInterval('PT3H')); 
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata'); 

Результат 2:Дата создания: 2016-09-07 06:00:00
Дата окончания: 2016-09-07 09:00:00

Случай 3:

$expiration_date->add(new DateInterval('PT8H')); 
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata'); 

Результат 3:
Дата создания: 2016-09-07 06:00:00
Дата окончания: 2016-09-07 02:00:00

Случай 4:

$expiration_date->add(new DateInterval('PT24H')); 
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata'); 

Результат 4:
Дата создания: 2016-09-07 06:00:00
Дата окончания: 2016-09-08 06:00:00

Но когда я увеличиваю $expiration_date переменную 12 часов, дата не увеличивается!

Они показывают одно и то же время!

Случай 5:

$expiration_date->add(new DateInterval('PT12H')); 
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata'); 

Результат 5:
Дата создания: 2016-09-07 06:00:00
Дата окончания: 2016-09-07 6:00:00



Что я делаю неправильно?

+2

Я предполагаю, что это правильно заселение, однако ваш формат времени должен быть установлен на 24 часа, не могли бы вы проверить, что? – SanketR

+1

https://3v4l.org/2g7r5 Работает для меня. Также 'format ('Asia/Kolkata')' не имеет смысла. –

+0

Ваш код верный, вам нужно просто убедиться, что он должен показывать дату в 24 часа. 6pm + 12hrs = 6am – STEEL

ответ

4

8 часов дает вам

Creation Date: 2016-09-07 06:00:00 
Expiration Date: 2016-09-07 02:00:00 

Неужели вы думаете, что это 6 + 8 = 2? Нет, это 14, что составляет 2 вечера То же самое с 6 + 12 составляет 18, что составляет 6 вечера.Изменить формат отображаемых данных на 24 часа;)

+0

Да да ... его работа! Большое вам спасибо :) Я ударился головой о мой ноутбук, пытаясь выяснить проблему в течение часа! : D Я изменил его на 24-часовой формат. Теперь он работает нормально. Извините за глупый вопрос. –

+0

Хе-хе, пожалуйста! – nospor

1

Я предполагаю, что он заселен правильно, однако ваш формат времени должен быть установлен на 24 часа, не могли бы вы проверить это?

1

Формат даты вопрос,

$expiration_date= new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata')); 
$expiration_date->add(new DateInterval('PT8H')); 
echo date_format($expiration_date, 'Y-m-d H:i:s'); //2016-09-07 14:00:00