Forum Webscript.Ru

Программирование => PHP => Тема начата: Solid от 18 Апреля 2002, 03:43:24

Название: Дата
Отправлено: Solid от 18 Апреля 2002, 03:43:24
Поставленная такая задача:
Есть дата, например сегоднешняя - 18.04.2002.
Нужно сделать слудющее, если дата, ещё одна, совпадает с предыдущими 7-ю днями, то выводим, например true, впротивном случае - false.
Если кто не пнял, нужно что бы например, если сегодня 3.05.2002, что бы если дата 30.04.2002 выводило true, как это лучше сделать, спрашивается.
Спасибо, объяснил как мог, спать хочу, всётаки 3:00 уже ;)
Название: Дата
Отправлено: Metaller от 18 Апреля 2002, 09:29:15
Переводи в таймштамп, вычитай олно из другого и сравнивай с (3600*7).
Название: Дата
Отправлено: Fury от 18 Апреля 2002, 12:36:30
Я бы добавила, что с 86400*7
Название: Дата
Отправлено: Metaller от 18 Апреля 2002, 12:38:10
Цитировать
Я бы добавила, что с 86400*7

Логично :-)
Название: Дата
Отправлено: Solid от 18 Апреля 2002, 16:33:46
Эммм .. я же вроде бы просил пример ;) или забыли?
Название: Дата
Отправлено: Metaller от 18 Апреля 2002, 16:45:05

$timestamp1=mktime (0, 0, 0, $month1, $day1, $year1);
$timestamp2=mktime (0, 0, 0, $month2, $day2, $year2);
if(($timestamp1-$timestamp2)>86400*7) {
//прошло больше
} else{
//прошло меньше, или 2 было позже чем 1
}
 
получить месяц, день и год из строки, надеюсь, проблем нет?

з.ы. надеюсь, я не налажал тут..... :-)))
Название: Дата
Отправлено: Solid от 18 Апреля 2002, 17:02:56
Metaller:
Спасибо!
А вот и полностью код, может кому пригодится:

$date[0] = \'11.12.2002\';
$date[1] = \'02.12.2002\';

list($day[0], $month[0], $year[0]) = explode(\'.\', $date[0]);
list($day[1], $month[1], $year[1]) = explode(\'.\', $date[1]);

$timestamp[0] = mktime(0, 0, 1, $month[0], $day[0], $year[0]);
$timestamp[1] = mktime(0, 0, 1, $month[1], $day[1], $year[1]);

if(($timestamp[0]-$timestamp[1])>86400*7) {
echo \'false\';
} else {
echo \'true\';
}
?>
Название: Дата
Отправлено: Metaller от 18 Апреля 2002, 17:07:23
Тогда уж, для повышения быстродействия, надо заранее посчитать 86400*7 - и вставить уже готовое число в скрипт, дабы не заставлять бедный пхп считать всякие глупости :-)
Название: Дата
Отправлено: Solid от 18 Апреля 2002, 18:00:10
Metaller:
Пусть считает, хоть думать получше нучился :D
Название: Дата
Отправлено: Dm от 19 Апреля 2002, 02:04:57
какой ужас!!!
быстро смотрим ман:
http://www.php.net/manual/en/function.strtotime.php
Название: Дата
Отправлено: Metaller от 19 Апреля 2002, 09:37:47
Dm
пожалуй, работать оно будет побыстрее :-)))) Но зато неинтересно :-)
Название: Дата
Отправлено: Dm от 19 Апреля 2002, 19:40:57
Цитировать
Но зато неинтересно :-)

точно! :) через одно место привычнее же! ;) (без намеков ни на кого)
я сторонник того, чтобы все было все как надо, а не так как не надо.
Название: Дата
Отправлено: AlieN от 24 Апреля 2002, 19:51:21
Solid Тогда делаем вот так:

$date[0] = \'11.12.2002\';
$date[1] = \'02.12.2002\';

$timestamp[0] = strtotime ("$date[0]");
$timestamp[1] = strtotime ("$date[1]"),

if(($timestamp[0]-$timestamp[1])>86400*7) {
    echo \'false\';
} else {
    echo \'true\';
}
?>