| |
работы с изображения-
ми, которые работают быстрее, поэтому я не рекомендую вам применять
PassThru() даже в подобных целях). Давайте рассмотрим пример использования
этой функции:
Header("Content-type: image/jpeg");
PassThru("cat my_image.jpg");
Функция Header(), которую мы рассмотрим в другой главе, сообщает браузеру
пользователя, что данные поступят в графическом формате JPEG, а последующий
вызов утилиты cat с параметром — именем файла с рисунком — заставляет систему
"распечатать" файл в браузер пользователя.
Глава 19
Работа с датами
и временем
В PHP присутствует полный набор средств, предназначенных для работы с датами и
временем в различных форматах. Дополнительные модули (входящие в дистрибутив
PHP) позволяют также работать с календарными функциями и календарями различ-
ных народов мира. Мы рассмотрим только самые популярные из этих функций.
Представление времени
в формате timestamp
int time()
Возвращает время в секундах, прошедшее с полуночи 1 января 1970 года по Гринви-
чу до настоящего момента. Этот формат данных принят в Unix как стандартный: в
частности, время последнего изменения файлов указывается именно в таком формате
(как вы, возможно, помните по описанию функции file_mtime()). Вообще говоря,
почти все функции по работе со временем имеют дело именно с таким его представ-
лением (которое называется timestamp). То есть представление "количество секунд
с 1
января 1970 года весьма универсально и, что главное, — удобно.
На самом-то деле, timestamp не отражает реальное (астрономическое) число
секунд с 1 января 1970 года, а немного отличается от него. Впрочем, это нис-
колько не умаляет преимущества от его использования.
string microtime()
Возвращает строку в формате: "микросекунды секунды", где секунды — то, что
возвращается функцией time(), а микросекунды — дробная часть секунд, служащая
для более точного измерения промежутков времени. Эта функция работает только в
системах, которые поддерживают системный вызов gettimeofday(), т. е. практиче-
ски во всех.
Глава 19. Работа с датами и временем 281
С функцией microtime() связано одно недоразумение. Дело в том, что мил-
лисекунды в различных ОС выглядят по-разному. Например, в Unix это дейст-
вительно число микросекунд, а в Windows — непонятное значение, связанное
неизвестно с чем. Возможно, оно все же несет какой-то смысл, но мне до него
"докопаться", увы, не удалось.
int mktime([int $hour] [,int $minute] [,int $second] [,int $month]
[,int $day] [,int $year])
До сих пор мы рассматривали функции, которые преобразуют формат timestamp в
представление, удобное для человека. Существует всего одна функция, которая
про-
водит обратное преобразование — mktime(). Как мы видим, все ее параметры не-
обязательны, но пропускать их можно, конечно же, только справа налево. Если
какие-
то параметры не заданы, на их место подставляются значения, соответствующие те-
кущей дате. Функция возвращает значение timestamp, соответствующее указанной
дате.
Правильность даты, переданной в параметрах, не проверяется. В случае
некорректной
даты ничего особенного не происходит — функция "делает вид", что это ее не
касает-
ся, и формирует соответствующий 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)); // неправильная дата
Легко убедиться, что выводятся три одинаковых числа.
Работа с датами
string date(string $format [,int $timestamp])
Эта функция крайне полезна и весьма универсальна. Она возвращает строку, отфор-
матированную в соответствии с параметром $format и сформированную на основе
параметра $timestamp (если последний не задан — то на основе текущей даты).
Строка формата может содержать обычный текст, перемежаемый одним или не-
сколькими
|
|