Forum Webscript.Ru

Программирование => PHP => Тема начата: не не от 24 Сентября 2002, 20:32:21

Название: сравнение дат
Отправлено: не не от 24 Сентября 2002, 20:32:21
есть $date1 и $date2

первая берётся из базы а другая равна time()
и надо определить наступил ли следующий день с момента первой даты
Название: сравнение дат
Отправлено: GotZfild от 24 Сентября 2002, 20:35:48
Поищи по форуму. На моей памяти как минимум два подобных топика.
Название: сравнение дат
Отправлено: Меняздесьдавнонет от 24 Сентября 2002, 21:32:51
GotZfild
На РНРКлубовском форуме обсуждение закончилось, когда мужики совсем офигели после такого вопроса:
Цитировать
я: сравнивать date("d",time()) и день из базы.
не не: а если уже месяц прошол или год, и день при таком сравнении будет равен


Человек к вам за помощью пришел, а вы - "в поиск". Негуманно.
Название: сравнение дат
Отправлено: PilotV от 24 Сентября 2002, 22:36:22

if ((int)date("Ymd",$date2)-(int)date("Ymd",$date1)>0) {
.....
}
Название: сравнение дат
Отправлено: Макс от 24 Сентября 2002, 22:53:38
а может на стороне mysql?
SELECT (to_days(now()) - to_days(date)) FROM table;
Название: сравнение дат
Отправлено: Million от 25 Сентября 2002, 12:44:27
Собираешь время в секундах с 1970 года
$now=mktime();
потом cравниваешь его, складываешь, вычетаешь,  умножаешь, делишь:) вобщем делаешь всё что твоей душе угодно:)
А для просмотра выводишь так как тебе нравится, например:
echo(date(" [D M j  Y] [H:i:s] ", $now));
Название: сравнение дат
Отправлено: Меняздесьдавнонет от 25 Сентября 2002, 14:06:41
Ребята.
Все это хорошо.
Но до сих пор никто в мире не знает, в каком формате у него дата в базе.
Название: сравнение дат
Отправлено: Million от 25 Сентября 2002, 14:40:09
Так пусть сделает в нормальном формате и сообщит всему миру:)
Название: сравнение дат
Отправлено: Million от 25 Сентября 2002, 15:51:29
Если это очень сложно можно сделать примерно так:
$day=28;  //берёшь из базы
$mon=10;  //берёшь из базы
$year=2000;    //берёшь из базы
$dayfrombase=mktime(0,0,0,$day,$mon,$year); //перевод в секунды после 1970
$daynow=mktime(0,0,0,date("m"),date("d"),date("Y"));  //текущий день в секундах после 1970
if ($dayfrombase!=$daynow) echo "Наступил новый день";
Название: сравнение дат
Отправлено: Доктор от 25 Сентября 2002, 16:38:42
Ну, и я всунусь :)

//$date1 -  timestamp (судя по вопросу), взятый из базы
$date2=time();
if (($date2-(ceil($date1/86400)*86400))>0)
  echo "Наступил новый день";
Название: сравнение дат
Отправлено: Million от 25 Сентября 2002, 17:42:11
Доктор
зачем эти вычисления: (ceil($date1/86400)*86400) ?
Округлит ceil в большую сторону и получится примерно на 0.5 дня больше.
Название: сравнение дат
Отправлено: Доктор от 26 Сентября 2002, 05:13:44
Million
Цитировать
зачем эти вычисления: (ceil($date1/86400)*86400) ?
Округлит ceil в большую сторону и получится примерно на 0.5 дня больше

Не понял вопроса... Эти вычисления дают начало следующего дня относительно $date1. Что неясно?
Название: сравнение дат
Отправлено: Million от 26 Сентября 2002, 11:59:54
Доктор
Всё ОК!
Название: сравнение дат
Отправлено: PilotV от 26 Сентября 2002, 14:10:54
Доктор, не лечи мОзги :-)
Твой алгоритм с пробоями. См. мой выше - и будет щастье.
Название: сравнение дат
Отправлено: Доктор от 26 Сентября 2002, 14:36:18
Щас угадаю: не учитывается переход на зимнее/летнее :)) Забыл как-то за азартом алгоритмостроений ;)
Название: сравнение дат
Отправлено: PilotV от 26 Сентября 2002, 14:59:23
Угу. И еще время 00:00:00 не учет.
Название: сравнение дат
Отправлено: Доктор от 26 Сентября 2002, 15:42:07
PilotV
Цитировать
И еще время 00:00:00 не учет.


А это, типа, не новый день :Р