Лучший белый каталог сайтов и статей с прямыми ссылками
Каталог   Добавить ссылку   Добавить статью   Администрирование   Карта  
 

Добро пожаловать в белый каталог сайтов и статей elenaageeva.ru! В наш каталог вы можете совершенно бесплатно добавлять свои сайты и статьи без обратной ссылки.

Просьба добавлять сайты в соответствующую категорию! С уважением, администратор каталога..


Выделение дат и времен из строк при помощи PHP.

 

Решение

Проще всего анализировать строки даты или времени с помощью функции strtotime(), которая превращает множество понятных человеку строк даты и времени в метку времени UNIX:

$a = strtotime('march 10'); // по умолчанию в текущий год

Обсуждение

Грамматика функции strtotime() и сложна и обширна, поэтому лучший способ освоиться с ней состоит в том, чтобы попробовать множество различных представлений времени. Те, кому интересны ее секреты, могут обратититься к файлу ext/standard/parsedate.y из дистрибутива PHP.

Функция strtotime() понимает слова, описывающие текущее время:

$a = strtotime('now');
print strftime('%c',$a);
$a = strtotime('today');
print strftime('%c',$a);
Mon Aug 12 20:35:10 2002
Mon Aug 12 20:35:10 2002

Она понимает различные способы представления времени и даты:
(Формат представления даты «день/месяц/год», принятый в России, не поддерживается.)

$a = strtotime('5/12/1994');
print strftime('%c',$a);
$a = strtotime('12 may 1994');
print strftime('%c',$a);
Thu May 12 00:00:00 1994
Thu May 12 00:00:00 1994

Она понимает относительные время и дату:

$a = strtotime('last thursday'); // 12 августа 2002 года
print strftime('%c',$a);
$a = strtotime('2001 07 12 2pm + 1 month');
print strftime('%c',$a);
Thu Aug 8 00:00:00 2002
Mon Aug 12 14:00:00 2002

Она понимает часовые пояса. Когда следующий код запускается на компьтере, находящемся в зоне восточного поясного летнего времени (Eastern Daylight Time, EDT), он выводит то же самое время:

$a = strtotime('2002-07-12 2pm edt + 1 month');
print strftime('%c',$a);
Mon Aug 12 14:00:00 2002

Однако если код, приведенный ниже, запустить на компьютере, находящемся в поясе EDT, то он выведет время в часовом поясе EDT (16:00), когда в зоне горного летнего времени (Mountain Daylight Time, MDT), расположенной на 2 часа ближе к Гринвичу, чем пояс EDT, наступает два часа пополудни (14:00):

$a = strtotime('2002-07-12 2pm mdt + 1 month');
print strftime('%c',$a);
Mon Aug 12 16:00:00 2002

Если дата и время, которые требуется выделить из строки, представлены в известном заранее формате, то можно не вызывать функцию strto time(), а сконструировать регулярное выражение, выделяющее необходимые части даты и времени. Ниже показано, как разобрать даты формата «YYYY-MM-DD HH:MM:SS», такие как поле DATETIME в MySQL:

$date = '1974-12-03 05:12:56';
preg_match('/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
',$date,$date_parts);

Этот фрагмент помещает год, месяц, день, час, минуту и секунду в переменные от $date_parts[1] до $date_parts[6]. (Функция preg_match() помещает все выделенное выражение в переменную $date_parts[0].)

Регулярные выражения позволяют извлечь дату и время из большей строки, которая может также содержать и другую информацию (из ввода пользователя или из файла), но если известно расположение даты в разбираемой строке, то вызов функции substr() может даже ускорить разбор строки:

$date_parts[0] = substr($date,0,4);
$date_parts[1] = substr($date,5,2);
$date_parts[2] = substr($date,8,2);
$date_parts[3] = substr($date,11,2);
$date_parts[4] = substr($date,14,2);
$date_parts[5] = substr($date,17,2);

Можно также использовать функцию split();

$ar = split('[- :]',$date);
print_r($ar);

Array
(
      [0] => 1974
      [1] => 12
      [2] => 03
      [3] => 05
      [4] => 12
      [5] => 56
)

Будьте осторожны: PHP выполняет преобразование между числами и строками без какого-либо предупреждения, но числа, начинающиеся с 0, считаются восьмеричными (по основанию 8). Поэтому 03 и 05 –это 3 и 5; но 08 и 09 – это не 8 и 9.

Функции preg_match() и strtotime() имеют одинаковую эффективность при анализе формата даты, такого как «YYYY-MM-DD HH:MM:SS», но функция ereg() работает почти в четыре раза медленнее, чем другие. Для отделения части строки даты функция preg_match() наиболее удобна, но функция strtotime() очевидно имеет намного большую гибкость.



Комментарии:

Комментариев нет

Добавить свой комментарий:

Имя:

E-Mail адрес:

Комментарий:

Ваша оценка:

Введите число, которое Вы видите на картинке:
Информация
Источник:
http://www.сайты-всем.рф/files/php/vydelenie_dat_i_vremeni_iz_strok.php
Автор: Игорь
Категории:
Оценка модератора: Нет
Оценка пользователей: Нет
Переходов на сайт:0
Переходов с сайта:0
 
Рейтинг@Mail.ru продвижение самостоятельно

Поисковое продвижение здесь.

Под ключ забор из профнастила у нас.

Каталог популярных сайтов 200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время www.copyright.ru