Я хочу сохранить в базе данных две даты типа 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
Я не могу понять, в чем проблема, не могли бы вы помочь. Спасибо..
Вы должны узнать разницу между этими двумя функциями
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 впереди время по Гринвичу. Таким образом, выходные данные для обоих верны, но разница в часовые пояса
Мы должны установить формат даты перед использованием функции 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')));