Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка по времени создания файла.
 
 автор: Бамси   (23.04.2007 в 17:15)   письмо автору
 
 

Временем создание файла выстпает имя, например:

$str="gr_20070421234638_002273";
gr_20070421191555_001305
gr_20070421024537_001282
gr_20070421001805_002277

На более понятный вид это переводит регулярное выражение.

$pattern = '|gr_(.{4})(.{2})(.{2})(.{2})(.{2})(.{2})_(.{6})|i';
preg_match($pattern, $str, $matches);
list($all, $year, $month, $day, $hour, $min, $sec, $id_game) = $matches;

Допустим передомной стоит задача вывести игры которые сыграно только сегодня, я сделал слудещее, добавил переменную date_now которая содердит текущий день, номер месяца, год. И собирал переменную $date_game в которой бы хранился день, месяц и год, только уже данного файла.

$date_now = date("j.m.Y");
$date_game = ltrim($day, "0").".".$month.".".$year;

Ну и после просто сравнивал условием.

if($date_now == $date_game) {<code>}


Но после у меян возникла проблемма сделать что бы допустим отображались игры за:
Последние 24 часа.
Которые сыграны вчера.
На этой недели.
В этом месяце.

И что то я не могу придумать ничего путного как это осуществить. Желательно это сделать только заменой переменной $date_game, и не очень меняя условие.

   
 
 автор: Бамси   (24.04.2007 в 18:23)   письмо автору
 
   для: Бамси   (23.04.2007 в 17:15)
 

up.

   
 
 автор: Trianon   (24.04.2007 в 21:13)   письмо автору
 
   для: Бамси   (23.04.2007 в 17:15)
 

хоть up хоть down, в такой постановке (не меняя условие ) задачу не решить.

   
 
 автор: Бамси   (25.04.2007 в 08:55)   письмо автору
 
   для: Trianon   (24.04.2007 в 21:13)
 

Вы правы, наверно я загнул... ТОгда пожалуй можете менять и условие и значения.
Кроме

$str="gr_20070421234638_002273"; 
gr_20070421191555_001305 
gr_20070421024537_001282 
gr_20070421001805_002277

   
 
 автор: ZuArt   (25.04.2007 в 11:58)   письмо автору
 
   для: Бамси   (25.04.2007 в 08:55)
 

а можно просто составить строку граничных условий времени по принципу, по которому строятся имена файлов
dt1 = gr_ГГГГММДД0000_000000 - для нижней границы
dt2 = gr_ГГГГММДД9999_999999 - для верхней границы

и тупо проверять список файлов по условию dt1 <= dt_file <= dt2

и не надо никаких преобразований постоянных для отбора... достаточно провести только два для построения строк и потом тупо выбирать из списка файлов нужные и только с ними потом выполнять преобразования

   
 
 автор: Trianon   (25.04.2007 в 11:20)   письмо автору
 
   для: Бамси   (23.04.2007 в 17:15)
 

Нужно вычислить граничные точки требуемого диапазона,
преобразовать функцией mktime таймштамп в числовой вид,
и сравнивать его с граничными точками.
Для "последние 24 часа"

$time_game = mktime(......);
$timeb = time();
$timea = $timeb - 24*60*60;
if($timea <= $time_game && $time_game <=  $timeb)
    code();

   
 
 автор: Бамси   (25.04.2007 в 16:46)   письмо автору
 
   для: Trianon   (25.04.2007 в 11:20)
 

Чего то я не понял чего с mktime делать.

   
 
 автор: Trianon   (25.04.2007 в 16:57)   письмо автору
 
   для: Бамси   (25.04.2007 в 16:46)
 

какие у нее параметры?

   
 
 автор: zerocool   (25.04.2007 в 16:57)   письмо автору
 
   для: Бамси   (25.04.2007 в 16:46)
 

mktime("часы","минуты","секунды","месяц","день","год");

   
 
 автор: Бамси   (25.04.2007 в 18:26)   письмо автору
 
   для: Trianon   (25.04.2007 в 11:20)
 

С этим разобрался, а как допустим сделать сегодня, или вчера? Вместо последние 24 часа.

   
 
 автор: Trianon   (25.04.2007 в 18:33)   письмо автору
 
   для: Бамси   (25.04.2007 в 18:26)
 

сегодня, это время от момента
сегодняшний_день, сегодняшний_месяц, сегодняшний_год, 0 часов, 0 минут, 0 секунд
по момент
сегодняшний_день, сегодняшний_месяц, сегодняшний_год, 23 часа, 59 минут, 59 секунд

и первый и второй момент вычисляется через mktime()

сегодняшний год = date('Y');

дальше сообразите?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования