PHP
Функции даты и времени
Наиболее полезные функции даты и времени в PHP
функции даты и времени в PHP: php.net
date - форматирует вывод системной даты и времени
time - возвращает текущую метку системного времени Unix
date_default_timezone_get - возвращает временную зону, используемой по умолчанию
всеми функциями даты и времени в скрипте
date_default_timezone_set - устанавливает временную зону по умолчанию для всех
функций даты и времени в скрипте
getdate - возвращает информацию о дате и времени
strtotime - преобразует текстовое представление даты на английском языке в метку времени Unix
mktime - возвращает метку времени Unix для заданной даты
microtimee - возвращает текущую метку времени Unix с микросекундами
Класс DateTime - позволяет работать с датой и временем как с объектом
date_create - псевдоним DateTime::__construct()
date_format - псевдоним DateTime::format()
date_add - псевдоним DateTime::add()
date_interval_create_from_date_string - псевдоним DateInterval::createFromDateString()
date
Функция date - выводит текущую дату и время в нужном нам формате.
Возвращает строку, отформатированную в соответствии с указанным шаблоном format.
Необязательным параметром - используется метка времени, заданная аргументом timestamp,
или текущее системное время, если timestamp не задан. То есть, если мы не задаем
второй параметр, используется вызов функции time().
Параметры форматирования в руководстве: php.net
date ( $format , $timestamp = time ());
time
Функция time- возвращает количество секунд, прошедших с начала эпохи Unix (1 января 1970 00:00:00 GMT) до текущего времени.
Пример:
<?php
echo ('Y-M-d H:i:s');
// выведет текущее время
echo '<br>';
echo ('Y-m-d H:i:s', ());
// - тоже выведет текущее время
echo '<br>';
echo ('Y-m-d H:i:s', 0 );
// выведет: 1970-01-01 03:00:00 (3 часа - это разница часового пояса)
echo '<br>';
echo ('Y-m-d H:i:s', 1 );
// выведет: 1970-01-01 03:00:01 (прибавит к дате начала эпохи Unix одну секунду )
echo '<br>';
echo ('Y-m-d H:i:s', () + 60 );
// прибавляет к текушей дате одну минуту
echo '<br>';
echo ('Y-m-d H:i:s', () + 60 *60 );
// прибавляет к текушей дате один час
// таким образом можно получить любую дату, как будующую, так и прошедшую
echo '<br>';
echo '2010 - ' . ('Y');
// выведет: 2010-2019
?>
date_default_timezone_get
date_default_timezone_get - эта функция пытается получить временную зону по умолчанию,
то есть узнать, какой часовой пояс используется, по порядку следующими способами:
- чтение настройки временной зоны с помощью функции date_default_timezone_set() (если применимо);
- чтение значения ini-настройки date.timezone (если задана);
- если ни один из способов не принес результата, date_default_timezone_get()
вернет временную зону UTC.
Получение временной зоны по умолчанию:
<?php
echo ();
// выведет: Europe/Moscow
?>
date_default_timezone_set
date_default_timezone_set - от работы этой функции зависят все прочие функции даты и времени, перед использованием функциий, например, все той же date, необходимо установить нужный нам часовой пояс с помощью функции date_default_timezone_set. C помощью этой функции можно настроить нужный нам часовой пояс, передав параметром временную зону. Список поддерживаемых временных зон: php.net
getdate
getdate - эта функция позволяет получить дату в виде массива, при этом каждая из составляющих частей даты будет разбита на элементы ассоциативного массива. Индексы возвращаемого ассоциативного массива можно посмотреть здесь: php.net
<?php
$date = ();
// так как получаем массив, распечатываем с помощью print_r(),
print_r ($date );
// либо var_dump()
($date);
// вывод элементов массива по отдельности
echo $date [ 'year'];
// выведет: 2019
?>
- распечатка массива с помощью var_dump():
array (size=11)
'seconds' => int 59
'minutes' => int 50
'hours' => int 19
'mday' => int 12
'wday' => int 3
'mon' => int 6
'year' => int 2019
'yday' => int 162
'weekday' => string 'Wednesday' (length=9)
'month' => string 'June' (length=4)
0 => int 1560358259
2019
strtotime
strtotime - с помощью этой функции мы можем задавать время не в каких-то цифрах,
но и в цифрах с применением текста на английском языке.
Описание:
$time, $now = ())
(
Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC) относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен.
Пример:
<?php
echo ("+1 day"); // выведет некое количество секунд
echo '<br>';
// с помощью функции date, указав ей необходимые параметры,
// преобразовываем это количество секунд к понятной нам дате
echo ('Y-m-d H:i:s', ("+1 day")); // дата плюс один день
// выведит: дату завтрашнего дня
echo '<br>';
echo ('Y-m-d H:i:s', ("+1 day 2 hours"));
// выведит: дату завтрашнего дня плюс два часа
?>
mktime
mktime - работа этой функции похожа на работу функции time(), а так же позволяет
прибавлять в более понятной нам форме нужное количесто лет, нужное количество дней и т. д.
Список параметров смотреть здесь:
php.net
Аргументы могут быть опущены в порядке справа налево. В этом случае их значения
по умолчанию равны соответствующим компонентам локальной даты и времени.
Пример:
Выведем текущую временную метку с помощью функции time() и с помощью функции mktime().
<?php
echo ();
echo '<br>';
echo ( ("H"), ("i"), ("s"), ("m"), ("d"), ("Y"));
echo '<br>';
echo ( ("H"), ("i"), ("s") + 1, ("m"), ("d"), ("Y"));
// результат в третьем случае будет на одну секунду больше
?>
Выведет:
1560360383
1560360383
1560360384 - результат в третьем случае будет на одну секунду больше
- в двух случаях получаем один и то же результат
- но в случае с mktime() мы можем прибавлять числа к той или иной части даты, напимер,
прибавим одну секунду: date("s")+1 . Результат в третьем случае будет на одну
секунду больше.
Пример использования mktime():
В переменную $st поместим текущую дату и прибавим к ней один год: date("Y")+1 .
Выведем эту дату с помощью функции date() в нужном нам формате: 'Y-m-d H:i:s'
и вторым параметром передаем временную метку, которую мы получили выше: $st .
<?php
$st = ( ("H"), ("i"), ("s"), ("m"), ("d"), ("Y")+ 1 );
echo ('Y-m-d H:i:s', $st );
// в результате получаем дату следующего года
?>
Выведет:
2020-06-12 20:38:06
microtime
microtime - эта функция возвращает текущую метку времени Unix с микросекундами.
Эта функция доступна только на операционных системах, в которых есть системный
вызов gettimeofday().
Данная функция позволяет замерять время выполнения скрипта.
Перед началом выполнения скрипта запускается функция microtime(), результат ее
работы возвращается в какую - нибудь переменную, например - $start,
и после последней выполненной строчки кода, запускается еще раз эта функция
microtime(), результат ее возвращается в переменную $end.
Далее получаем разницу ($end - $start) - это и будет время выполнения
скрипта в секундах.
<?php
// возвращает текущую метку системного времени Unix
echo ();
echo '<br>';
// возвращает текущую метку времени Unix с микросекундами
echo ();
( ()); // по умолчанию получаем - string
( ( true )); // получим - float
echo '<br>';
// время выполнения скрипта
$start = (true );
// функция usleep - откладывает выполнение скрипта на микросекунды
( 100 );
$end = ( true );
echo $end - $start;
echo '<br>';
// время перебора счетчика
$start = ( true );
for ( $i = 1 ; $i <= 100000 ; $i++){
if ( $i == 100000 ) echo '<p>Отчет завершен </p>';
}
$end = ( true );
echo $end - $start ;
?>
Выведет:
1560361954
0.17640000 1560361954
string '0.17640000 1560361954' (length=21)
float 1560361954.1764
0.0090000629425049
Отчет завершен
0.017999887466431
Класс DateTime
Класс DateTime - позволяет работать с датой и временем как с объектом.
Класс - это набор свойств и методов. Свойства - это ни что иное как переменные
в классе, а методы - это ни что иное как функции в классе.
date_create
date_create - эта функция является псевдонимом конструктора класса: DateTime::__construct()
и создает объект даты-времени, с которым мы можем дальше работать, то есть для
которого мы можем вызывать в дальнейшем какие-то методы или функции.
Для данной функции необходимо передать просто параметр даты, например: год, месяц, число.
И внутри нее мы можем вызвать знакомую функцию date() и передать нужную нам дату.
<?php
// создадим переменную $date и для нее вызовим функцию date_create() и,
// в качестве параметра, передадим дату: '2016-05-24'
$date = ( '2016-05-24');
// - echo $date; - вызовет ошибку: объект класса DateTime невозможно
// конвертировать в строку, потому что, $date - объект.
print_r ( $date );
( $date );
?>
Функция print_r($date) выведет:
DateTime Object ( [date] => 2016-05-24 00:00:00.000000 [timezone_type] => 3 [timezone] => Europe/Moscow )
Функция var_dump($date) выведет:
object(DateTime)[1]
public 'date' => string '2016-05-24 00:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Moscow' (length=13)
date_format
date_format - эта функция является псевдонимом: DateTime::format().
Она преобразует дату к нужному нам формату, то есть показать в удобочитаемой
форме нам данный объект.
<?php
$date = ( ( 'Y-m-d H:i:s'));
echo ( $date , 'Y-m-d H:i:s');
?>
Выведет:
2019-06-12 21:19:00
date_add
date_add - эта функция является псевдонимом: DateTime::add().
Она позволяет прибавлять что-то к дате (часы, минуты, секунды и т. д.).
date_interval_create_from_date_string
date_interval_create_from_date_string - эта функция является псевдонимом: DateInterval::createFromDateString().
Она позволяет прибавлять удобочитаемые интервалы к дате.
<?php
echo ( $date , 'Y-m-d H:i:s');
// - где $date - объект обработанный функцией date_create()
// первый параметр - объект $date,
// второй параметр - date_interval_create_from_date_string()
( $date , ('2 days + 2hours + 10 minutes + 5 seconds'));
echo '<br>';
echo ( $date , 'Y-m-d H:i:s');
// где $date - объект обработанный функцией date_add()
?>
- выведет:
2019-06-12 21:26:20
2019-06-14 23:36:25
Наверх Наверх