Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.200.197] |
|
Сообщ.
#1
,
|
|
|
Сабж.
Например $date=28.07.2004 $date2=29.07.2004 Если сделать просто if ($date < $date2) { echo "...";} else {echo "....";} То он ничего не сравнивает... В чём ошибка? |
Сообщ.
#2
,
|
|
|
Недоработка в "первом языке", разработанном специально для web-программирования. Могли бы и реализовать.
Попробуй strcmp($date1, $date2) или перевести в unixtime |
Сообщ.
#3
,
|
|
|
Вот мой вариант:
function dateCmp($date1, $date2) { list($d, $m, $y) = explode('.', $date1); $t1 = $y + $m + $d; list($d, $m, $y) = explode('.', $date2); $t2 = $y + $m + $d; return ($t1 > $2); } |
Сообщ.
#4
,
|
|
|
Как перевести в unixtime и что это такое?
|
Сообщ.
#5
,
|
|
|
Unixtime - это кол-во секунд прошедших начиная с 1 января 1970 года. Для перевода времени в unixtime есть ф-ция mktime() Вот инструкция по её использованию.
Цитата mktime (PHP 3, PHP 4 , PHP 5) mktime -- Возвращает метку времени для заданной даты Description int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]]) Предепреждение: Обратите внимание на странный порядок аргументов, отличающийся от порядка аргументов стандартной функции Unix mktime() и делающий неудобной работу с необязательными аргументами. Часто при написании скриптов путают порядок аргументов, что приводит к ошибкам. Функция возвращает метку времени Unix, соответствующую дате и времени, заданным аргументами. Метка времени - это цело число, равное разнице в секундах между заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 г). Аргументы могут быть опущены в порядке справа налево. Опущенные аргументы считаются равными соответствующим компонентам локальной даты/времени. Аргумент is_dst может быть установлен в 1, если заданной дате соответствует летнее время, 0 в противном случае, или -1 (значение по умолчанию), если неизвестно, действует ли летнеее время на заданную дату. В последнем случае PHP пытается определить это самостоятельно. Это можно привести к неожиданному результату (который, тем не менее, не будет неверным). Замечание: Аргумент is_dst был добавлен в версии 3.0.10. Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет "Jan-01-1998". Пример 1. Пример использования функции mktime() <?php echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998)); echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98)); ?> Year может быть двух- или четырехзначным числом. Значения от 0 до 69 соответствуют 2000-2069, а 70-99 соответствуют 1970-1999 (в большинстве современных систем, где время представляется 32-битным целым со знаком, допустимыми являются значения year между 1901 и 2038). Windows: Ни одна из версий Windows не поддерживает отрицательные метки времени. Поэтому для Windows допустимыми являются значения year между 1970 и 2038. Последний день любого месяца можно вычислить как "нулевой" день следующего месяца. Оба приведенных ниже примера выведут "Последний день в феврале 2000 г: 29". Пример 2. Last day of next month <?php $lastday = mktime(0, 0, 0, 3, 0, 2000); echo strftime("Последний день в феврале 2000 г:: %d", $lastday); $lastday = mktime(0, 0, 0, 4, -31, 2000); echo strftime("Последний день в феврале 2000 г:: %d", $lastday); ?> Даты, в которых год, месяц и день равны 0, считаются неверными (иначе им бы соответствовала дата 30.11.1999, что, согласитесь, было бы довольно странно). |
Сообщ.
#6
,
|
|
|
А если создавать дату по типу
$dt=date(\"Y.m.d\",mktime(28,07,2004)); кажется, можно сравнивать. Могу ошибаться. |
Сообщ.
#7
,
|
|
|
Цитата Argentum, 28.07.04, 08:32 Могу ошибаться. Кажется ошибся;) Для начала ты неправильно вызвал ф-цию mktime() Для кого я тут ман выложил? твой вариант можно использовать в таком виде $dt1=date("Ymd",mktime(0,0,0,7,28,2004)); $dt2=date("Ymd",mktime(0,0,0,7,29,2004)); if ($dt1 > $dt2) { print('$dt1 > $dt2'); } else { print('$dt1 <= $dt2'); } |
Сообщ.
#8
,
|
|
|
Верно =) Я пытался тут по памяти
Память, кажется подвела... =) |
Сообщ.
#9
,
|
|
|
Цитата Rom@nych @ 28.07.04, 09:39 $dt1=date("Ymd",mktime(0,0,0,7,28,2004)); mktime(0,0,0,7,28,2004) А возмоно сделать так? mktime(H,i,s,m,d,y)??? Добавлено в : Возможно каряво написал, но как сделать так, чтобы он например $date=date("H:i:s:m:d:y") записывал в Unixtime? Чтобы то время которое сейчас он мог сравнить с тем которое хранится в базе тоже в Unixtime? |
Сообщ.
#10
,
|
|
|
Если нужно просто текущий Unixtimestemp то юзай mktime() без параметров. Также ф-ция time() возвращает Unixtimestamp()
|