int time()
Возвращает время в секундах, прошедшее с полуночи 1 января 1970 года по Гринвичу до настоящего момента. Этот формат данных принят в Unix как стандартный: в частности, время последнего изменения файлов указывается именно в таком формате (как вы, возможно, помните по описанию функции file_mtime()). Вообще говоря, почти все функции по работе со временем имеют дело именно с таким его представлением (которое называется timestamp). То есть представление "количество секунд с 1 января 1970 года весьма универсально и, что главное, — удобно.
На самом-то деле, timestamp не отражает реальное (астрономическое) число секунд с 1 января 1970 года, а немного отличается от него. Впрочем, это нисколько не умаляет преимущества от его использования.
string microtime()
Возвращает строку в формате: "микросекунды секунды[E75] ", где секунды — то, что возвращается функцией time(), а микро[E76] секунды — дробная часть секунд, служащая для более точного измерения промежутков времени. Эта функция работает только в системах, которые поддерживают системный вызов gettimeofday(), т. е. практически во всех.
С функцией microtime()
связано одно недоразумение. Дело в том, что миллисекунды в различных ОС выглядят по-разному. Например, в Unix это действительно число микро[E77] секунд, а в Windows — непонятное значение, связанное неизвестно с чем. Возможно, оно все же несет какой-то смысл, но мне до него "докопаться", увы, не удалось.
int mktime([int $hour] [,int $minute] [,int $second] [,int $month]
[,int $day] [,int $year])
До сих пор мы рассматривали функции, которые преобразуют формат timestamp в представление, удобное для человека. Существует всего одна функция, которая проводит обратное преобразование — mktime(). Как мы видим, все ее параметры необязательны, но пропускать их можно, конечно же, только справа налево. Если какие-то параметры не заданы, на их место подставляются значения, соответствующие текущей дате. Функция возвращает значение timestamp, соответствующее указанной дате.
Правильность даты, переданной в параметрах, не проверяется. В случае некорректной даты ничего особенного не происходит — функция "делает вид", что это ее не касается[E78] , и формирует соответствующий timestamp. Для иллюстрации рассмотрим три вызова (два из них — с ошибочной датой), которые тем не менее возвращают один
и тот же результат:
echo date("M-d-Y", mktime(0,0,0,1,1,1998)); // ïðàâèëüíàÿ äàòà
echo date("M-d-Y", mktime(0,0,0,12,32,1997)); // íåïðàâèëüíàÿ äàòà
echo date("M-d-Y", mktime(0,0,0,13,1,1997)); // íåïðàâèëüíàÿ äàòà
Легко убедиться, что выводятся три одинаковых числа.