время () до даты и времени - PullRequest
       6

время () до даты и времени

0 голосов
/ 29 сентября 2011

У меня есть приложение, которое использует time() для записи времени публикации темы.Я делал это в течение долгого времени, и единственный недостаток, который у меня когда-либо был с этим методом, заключался в том, что время всегда было выключено на час (в основном это проблема DST, которую я никогда не изучал).

Я хочупереключитесь на метод DateTime, так как я также переключаюсь на Twig, который использует этот формат даты при установке часового пояса.

Но из того, что я вижу, вы не можете использовать временные метки для разбора даты,у меня вопрос, как вы вводите дату и анализируете ее, и какой формат они ищут, если она не time()?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2012

вы не можете использовать временные метки для разбора даты

Есть способ, если ваша версия php> = 5.3:

$time = time();//or other time
$date = DateTime::createFromFormat('U',$time);

но на самом деле использовать метку времени несколько странно, поскольку DateTime не полагается на нее. Вы можете проанализировать строку даты непосредственно с помощью конструктора datetime, если ваша дата является английской или "французской" (т.е. d/m/y). Вы также можете создать свой собственный формат.

как вы вводите дату и анализируете ее и в каком формате они ищут, если это не время ()

если это стандартный формат даты:

$date = new DateTime($yourString);//would throw an exception if the format is wrong

если это пользовательский формат, например, ДД / ММ / ГГГГ, 14 ч 32 мин.

$date = DateTime::createFromFormat('d/m/Y h\hi\m\i\n\s',$yourString);
if($date === false){//if format does not fit
   exit('Your wrong !');
}

У меня есть приложение, которое использует time () для записи времени публикации темы.

Очень плохая практика. В MySQL у вас есть формат DateTime (и каждая система реляционных баз данных имеет свой собственный эквивалент) для хранения дат и времени, и они полностью совместимы с конструктором DateTime в PHP, поэтому переходите на него (используйте FROM_TIMESTAMP для перехода на DateTime).

0 голосов
/ 29 сентября 2011

Судя по звукам, часовой пояс вашего сервера по умолчанию - UTC. Я предлагаю вам попробовать изменить настройку default_timezone в php.ini на что-то, что применяет DST. Это будет означать, что при использовании date() результирующий вывод будет корректно настроен на DST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...