РНР 5 в подлиннике

Страница 205 из 554


Гпава 22. Работа с датами и временем

415

int strtotime(string $time [,int $timestamp])

При вызове mktime () легко перепутать порядок следования параметров и, таким образом, получить неверный результат. Функция strtotime о лишена этого недостатка. Она принимает строковое представление даты в свободном формате и возвращает соответствующий формат timestamp.

Насколько же свободен этот "свободный" формат? Ведь ясно, что всех текстовых представлений учесть нельзя. Ответ на данный вопрос дает страница руководства Unix под называнием "Date input formats", которая легко находится в любой поисковой системе по ее названию — например,

http://www.google.com.ru/search?q=Date+input+fonnats.

В листинге 22.4 приведен сценарий, проверяющий, как функция strtotime () воспринимает строковые представления некоторых дат. Результат выводится в виде таблицы, в которой отображается timestamp, а также заново построенное по этому time-stamp-формату строковое представление даты.

i Листинг 22.4. Файл strtotime.php

<?php ## Использование функции strtotime (). $check = array( "now",

"10 September 2000", "+1 day", "+1 week",

"+1 week 2 days 4 hours 2 seconds", "next Thursday", "last Monday",

);

?>

<table width="100%"> <tr align="left">

<№>Входная строка</№>

<th >Time s tamp</th>

<№>Получившаяся дата</Ш>

<а1>Сегодня</№> </tr>

<?foreach ($check as $str) {?> <tr>

<td><?=$str?x/td>

<tdx?=$stamp=strtotime ($str) ?></td> <tdx?=date ("Y-m-d H:i:s", $stamp) ?></td> <tdx?=date ("Y-m-d H:i:s", time () ) ?></td> </tr> <?}?> </table>

В табл. 22.1 приведены примеры результатов работы этого скрипта.

416

Часть IV. Стандартные функции РНР

Таблица 22.1. Результаты вызова strtotime О для некоторых дат

Входная строка

Timestamp

Получившаяся дата

Сегодня

now

1080160854

2004-03-24 23:40:54

2004-03-24 23:40:54

10 September 2000

968529600

2000-09-10 00:00:00

2004-03-24 23:40:54

+ 1 day

1080247254

2004-03-25 23:40:54

2004-03-24 23:40:54

+1 week

1080762054

2004-03-31 23:40:54

2004-03-24 23:40:54

+ 1 week 2 days 4 hours 2 seconds

1080949256

2004-04-03 03:40:56

2004-03-24 23:40:54

next Thursday

1080766800

2004-04-01 01:00:00

2004-03-24 23:40:54

last Monday

1079902800

2004-03-22 00:00:00

2004-03-24 23:40:54

Разбор timestamp

array getdate(int $timestamp)

Возвращает ассоциативный массив, содержащий данные об указанном времени. В массив будут помещены следующие ключи и значения:

□ seconds — секунды;

□ minutes — МИНУТЫ;

□ hours — часы;

□ mday — ЧИСЛО;

□ wday — день недели (0 означает воскресенье, 1 — понедельник, и т. д.);

□ топ — номер месяца;

□ year — ГОД;

□ yday — номер дня с начала года;

□ weekday — ПОЛНОе название ДНЯ Недели, например, Friday;

□ month — ПОЛНОе название месяца, например, January.

В общем-то, всю эту информацию можно получить и с помощью функции date о, но тут разработчики РНР предоставляют нам альтернативный способ.

Григорианский календарь

Григорианский календарь — это как раз тот самый календарь, который мы постоянно используем в своей жизни. В России он был введен Петром I в 1700 году.

Описываемые далее три функции представляют большой интерес, если вам понадобится автоматически формировать календари в сценариях. Все они имеют дело с так называемым форматом Julian Day Count (JDC). Что это такое?

Каждой дате соответствует свой JDC. Ведь, фактически, JDC — это всего лишь количество дней, прошедших с определенной даты (с 4714 года до н. э.).




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006