Intereting Posts
Книга или учебник о безопасном управлении пользователями и привилегиях Подтвердить URL страницы в Facebook JQuery jQGrid развернуть / свернуть сетку при нажатии на слой с надписью Получение иерархических данных В чем преимущества размещения вашего Javascript в файле .php? Должен ли я хранить хэши для паролей? Как обслуживать документы из-за пределов сети через PHP? Насколько неустойчивым является соленый SHA1 по сравнению с соленым SHA512 php не может подключиться к mysql с ошибкой 13 (но в командной строке) PHP передаёт переменную id через href Есть ли способ обнаружить, существует ли таблица базы данных с Laravel MySQL, безопасно используя зарезервированное слово в запросе Emoji для кодирования JSON, сообщение на веб-сервер Добавление 30 минут к времени, отформатированное как H: i в PHP Как мне повторить попытку PHP flock () в течение определенного периода времени?

PHP: помощь с этим форматированием даты

У меня есть приложение, которое я создаю с помощью CodeIgniter. У меня есть записи в БД SQL Server, у которых есть поля datetime.

Я запрашиваю эти записи из дат, введенных в текстовое поле в m / d / Y. Это соответствует формату даты в db.

К сожалению, я в Великобритании! Поэтому я хочу вводить даты в формате d / m / Y. Поэтому мне нужно зафиксировать это, отформатировать его в соответствующем формате и затем проверить его.

Вот код в использовании для форматирования:

$datestring = "%m/%d/%Y"; if(isset ($_POST['from_date']) AND isset ($_POST['to_date'])){ $from = mdate($datestring, strtotime($_POST['from_date'])); $to = mdate($datestring, strtotime($_POST['to_date'])); 

Я использую mdate из помощника даты CI, но он почти такой же, как date (), я думаю.

Если я введу данные 13/12/2010, отправьте форму и дампируйте новую дату, которую она выйдет, как

 string(10) "02/06/2011" 

Как это произошло?

Может кто-нибудь протянуть руку? : D

Билли

Ответ заключается в том, что в европейском формате даты используются тире, а не косые черты.

Согласно руководству :

Заметка:

Даты в форматах m / d / y или dmy устраняются неоднозначно, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что американский m / d / y; тогда как если разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.

Использование правильного формата работает как шарм:

 // American format // $_POST['from_date'] = "02/06/2011"; $yankeeTimestamp = strtotime($_POST['from_date']); // European format // $_POST['from_date'] = "06-02-2011"; $euroTimestamp = strtotime($_POST['from_date']); echo date("m/d/Y", $yankeeTimestamp); // returns 02/06/2011 echo date("m/d/Y", $euroTimestamp); // returns 02/06/2011 

То, что я сделал бы, – это взорвать дату на '/' и сделать новую дату с помощью mktime:

 $from = explode('/', $_POST['from_date']); $from = mktime(0, 0, 0, $from[1], $from[0], $from[2]); $from = mdate($datestring, $from);