Главная » 2016 » Июнь » 20 » Создание timestamp
13:22
Создание timestamp
Давайте поп порядку:1. Создание timestamps из строки Функция strtotime () иногда становится лучшим другом РНР-программистам. Как понятно из названия, функция генерирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday. Эти строки могут быть относительной или абсолютной датой. В таблице 6.2 приведены примеры использования этой функции.Вызов Вывод (как timestamp) strtotime ("e;Friday"e;) Пятница, полночь strtotime ("e;+1 week Friday"e;) Следующая пятница (через одну), полночь strtotime ("e;+l week"e;) Неделя с текущего момента strtotime ("e; -2 months "e;) Два месяца с текущего момента назад strtotime ("e;October 1, 2008"e;) 1 октября 2008 года, полночь strtotime ("e;2008-10-01"e;) 1 октября 2008 года, полночь strtotime ("e;Friday 12:01 p.m."e;) Пятница в 12:01 РМ strtotime ('47 days 12:01 p.m."e;) 7 дней спустя В 12:01 РМХотя большинство форматов даты работают с strtotime (), некоторые могут ее шокировать, поэтому не всегда результат будет таким, каким мы его ожидаем. Например, strtotime ("e;2008-10-01"e;) работает отлично, но strtotime ("e;10-01-2008"e;) будет преобразована в 28 июня 2015 года. Чтобы не было таких ситуаций, дату нужно задавать в формате ISO 8601 -ГГГГ-ММ-ДД (см. http: //www. cl. cam. ас .uk/~mgk25/iso-time. html). К тому же этот формат понимает MySQL, что немаловажно (см. п. «Форматы даты MySQL»). Если strtotime () не может преобразовать вашу дату, она вернет false (в РНР 5.1 или более поздней) или -1 (в более ранних версиях РНР). Результат -1 обычно возвращается, когда вы задаете дату до начала эпохи, например 31 декабря 1969 года.Проверка дат с помощью функции strtotime ()Функцию strtotime () можно использовать для проверки правильности даты. Например, пользователь вводит в форму следующую дату 2008-01-01. Проверить корректность этой даты можно с помощью strtotime (). Правда, вы должны учитывать особенность этой функции, например, если пользователь введет yesterday, то для функции это будет правильная дата. Если вы помещаете дату в базу данных, то вам нужно выполнить дополнительную проверку даты. Следующий сценарий проверяет введенную пользователем дату:<?php$user_supplied_date = $_GET[date]; $user_timestamp = strtotime ($user_supplied__date) ;// Задаем начало/конец допустимого диапазона дат $start_date = strtotime(“2008-01-01”);$end_date = strtotime(“2009-01-01”); if ($user_timestamp < $start_date I | $user_timestamp >= $end_date) {die(“Date does not fall within the valid range of dates”); }$database_date = date (“Y-m-d”, $user_timestamp) ; // Now use $database_date in a database query. ?> Примечание. Функция date () будет рассмотрена чуть позже в этой главе. Создание timestamp по датеЕсли вы знаете точную дату и время, вы мо-жете получить его timestamp с помощью функции mktime (). Вам нужно указать час, минуту, секунду, день месяца, месяц и год.Например: $future_date - mktime($hour, $minute/ $second, $month, $day, $year);Вы можете опустить аргументы справа. В этом случае mktime () будет использовать значения из текущей даты. Например, mktime (12, 00, 0) создаст timestamp полдня текущего дня, месяца и года. Вам нужно передать функции mktime () актуальные числа, но не строки, содержащие числа. Например, mktime (“12”, “05”, “2008”) вызовет ошибку.Примечание.Если вы создаете дату с помощью mktime (), нужно установить час по умолчанию равным 12 на случай, если ваш сервер имеет проблему с часовыми поясами.Часто используемый программистами трюк заключается в использовании функций date () и strtotime () для получения текущего месяца или дня в вызове mktime ().Например, следующая строка кода использует функцию date () для получения текущего месяца (формат номера 01-12) и затем вставляет номер месяца в позицию month функции mktime ():$first_of_this_month = mktime(0, 0, 0, intval (date ("e;m"e;) ) , 1);А этот фрагмент кода использует функцию strtotime () для получения timestamp следующего месяца, а затем конвертирует этот timestamp в формат, подходящий для использования функции mktime ():$next_month_timestamp = strtotime("e;+1 month"e;); $first_of_next_month = mktime(0, 0, 0, intval(date("e;m"e;, $next_month_timestamp)), 1, intval(date("e;y"e;, $next_month_timestamp)));Конечно, иногда функции mktime () недостаточно, потому что мы не только работаем с месяцами и днями, но и с неделями. Тогда нам нужно использовать strtotime().Для проверки даты можно использовать функцию checkdate (), которая возвращает true или false в зависимости от того, корректна ли переданная дата или нет. Например, checkdate (12, 31, 2008) возвращает true, acheckdate (2, 31, 2008) -false.Теперь, когда мы знаем, как создавать и манипулировать датами в РНР, давайте разберемся, как выводить их.
Просмотров: 526 | Добавил: AdnrNick | Рейтинг: 0.0/0
Всего комментариев: 0
avatar