Проблема с форматом даты в PHP при конвертации в большой int

Я хочу сохранить в базе данных две даты типа big int У меня есть массив, который сериализуется и отправляет значения массива во вторую форму, а массив состоит из

[checkin] => 01-07-2015
[checkout] => 03-07-2015

После преобразования этого с помощью

$arr['checkin'] = strtotime($arr['checkin']);
$arr['checkout'] = strtotime($arr['checkout']);

Я получаю ценность как 1435689000 1435861800 соответственно, которые на один день меньше фактических значений даты.

и просто сообщить на моем сервере, если мой код

<?php echo date('d-m-y', '1435689000');?>

тогда вывод будет 01-07-15и если бы я попытался использовать gmdate функционировать следующим образом

echo gmdate('d-m-y', '1435689000');

Выход будет 30-06-15

Я не могу понять, в чем проблема, не могли бы вы помочь. Спасибо..

3

Решение

Вы должны узнать разницу между этими двумя функциями

1) Дата

string date ( string $format [, int $timestamp = time() ] )

Возвращает строку, отформатированную в соответствии с заданной строкой формата, используя заданное целое число отметка времени или текущее время, если нет отметка времени дано. Другими словами, отметка времени является необязательной и по умолчанию имеет значение time ().

2) gmdate

string gmdate ( string $format [, int $timestamp = time() ] )

идентичный to the date() function за исключением того, что время возвращается по Гринвичу (GMT).

Если вы видели другую функцию, она уже определила, что обе идентичны, но gmdate возвращает его в время по Гринвичу

Если вы повторяете обе эти функции вместе с time вы поймете разницу

echo date('Y-m-d H:i:sP',1435689000);//2015-07-01 00:00:00+05:30

echo gmdate('Y-m-d H:i:sP',1435689000);//2015-06-30 18:30:00+00:00

потому что согласно время по Гринвичу часовой пояс ваше текущее время +0530 впереди время по Гринвичу. Таким образом, выходные данные для обоих верны, но разница в часовые пояса

2

Другие решения

Мы должны установить формат даты перед использованием функции strtotime. Потому что все предоставленные пользователем форматы не могут принять по php. Мы можем использовать так:

$date = \DateTime::createFromFormat("d-m-Y" , '03-07-2015');
echo gmdate('d-m-y', strtotime($date->format('Y-m-d H:i:s')));
0