Блог

PHP: преобразование 24 часа времени в 12 часов (AM / PM) времени

Необходимо преобразовать время из 24 – часового формата в 12-часовой формат является довольно распространенной задачей в PHP с базой данных. Большинство баз данных требует время в 24 часовом формате, в то время как люди предпочитают читать свое время в 12 часовом формате. Быстрый поиск в Google показал столь сложные и непонятные решения и подтверждает, что это еще один из тех общих проблем, но найдены более инженерные решения, что обеспечивает простое и элегантное решение. Другими словами, есть гораздо лучшее решение…

PHP предлагает две простые функций, которые довольно мощные инструментом для работы с датами и временем. Эти функции date(), и менее знакомый strtotime().

«Если вы не знаете, strtotime() функцию, пришло время познакомиться!»

strtotime() принимает любую дату / время в строковом виде, описание функции можете посмотреть php.net, суть работы функции заключается в преобразование строки в timestamp в метку времени Unix. Способность функции расшифровать текстовые даты и времени почти разумные. Например передать строку “tomorrow”, и он вернет метку времени для завтрашней даты!

echo strtotime(“tomorrow”);
выход: 1308891600

Если вспомнить все удобные способы date() управление датами и временем, когда у нас простая метка времени для работы. Пример даты, с преобразованием в человека читаемый вид.

echo date(“m / d / Y”, strtotime(“tomorrow “));
выход: 07/10/2011

Все это упростит преобразование времени с 24 часов до 12 форматов час. strtotime() функция не просто принять дату или абстрактные термины, как “tomorrow”… это также может работать с описания времени. Функция способна расшифровке MySQL времени.

echo date(“g:i a”, strtotime (“17:20:37”)));
выход: 5:20 PM

И наоборот, 12-часовое время, которое должно быть преобразовано в 24 часа для вставки в базу данных… так же легко.

echo date(“H:i:s”, strtotime (“5:20 PM”));
выход: 17:20:00

Единственное ограничение, когда вы проходите strtotime строку только представляющие время, считается сегодняшняя дата, используемая для создания полной метку времени. Это не влияет на использование в данном случае, но это чтобы знали. Небольшой бонус лечения преобразования в часовом поясе пользователя (и 12-часовом формате) на лету!

echo date(“g:i a”, strtotime (“17:20:30 UTC”));
выход: 16:20 am

Еще очень полезна функция для увеличение даты на желаемое время, недель, месяцев и т. д.

Пример:

<?php
$time = time();

echo date(‘m/d/Y g:i a’, strtotime(‘+7 day’, $time));
echo date(‘m/d/Y g:i a’, strtotime(‘+2 week ‘, $time));
echo date(‘m/d/Y g:i a’, strtotime(‘next month’, $time));
?>

Дополнительная информация: http://php.net/manual/ru/function.strtotime.php