Автор Тема: сравнение дат  (Прочитано 7080 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн не не

  • Guest
  • Постоялец
  • ***
  • Сообщений: 136
  • +0/-0
  • 2
    • Просмотр профиля
    • http://allbest.net.ru
сравнение дат
« : 24 Сентября 2002, 20:32:21 »
есть $date1 и $date2

первая берётся из базы а другая равна time()
и надо определить наступил ли следующий день с момента первой даты
http://allbest.net.ru
мой форум тута

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
сравнение дат
« Ответ #1 : 24 Сентября 2002, 20:35:48 »
Поищи по форуму. На моей памяти как минимум два подобных топика.
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #2 : 24 Сентября 2002, 21:32:51 »
GotZfild
На РНРКлубовском форуме обсуждение закончилось, когда мужики совсем офигели после такого вопроса:
Цитировать
я: сравнивать date("d",time()) и день из базы.
не не: а если уже месяц прошол или год, и день при таком сравнении будет равен


Человек к вам за помощью пришел, а вы - "в поиск". Негуманно.

Оффлайн PilotV

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #3 : 24 Сентября 2002, 22:36:22 »

if ((int)date("Ymd",$date2)-(int)date("Ymd",$date1)>0) {
.....
}
Я так думаю (c)

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #4 : 24 Сентября 2002, 22:53:38 »
а может на стороне mysql?
SELECT (to_days(now()) - to_days(date)) FROM table;
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Million

  • Super hero
  • Постоялец
  • ***
  • Сообщений: 185
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #5 : 25 Сентября 2002, 12:44:27 »
Собираешь время в секундах с 1970 года
$now=mktime();
потом cравниваешь его, складываешь, вычетаешь,  умножаешь, делишь:) вобщем делаешь всё что твоей душе угодно:)
А для просмотра выводишь так как тебе нравится, например:
echo(date(" [D M j  Y] [H:i:s] ", $now));

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #6 : 25 Сентября 2002, 14:06:41 »
Ребята.
Все это хорошо.
Но до сих пор никто в мире не знает, в каком формате у него дата в базе.

Оффлайн Million

  • Super hero
  • Постоялец
  • ***
  • Сообщений: 185
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #7 : 25 Сентября 2002, 14:40:09 »
Так пусть сделает в нормальном формате и сообщит всему миру:)

Оффлайн Million

  • Super hero
  • Постоялец
  • ***
  • Сообщений: 185
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #8 : 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 "Наступил новый день";

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #9 : 25 Сентября 2002, 16:38:42 »
Ну, и я всунусь :)

//$date1 -  timestamp (судя по вопросу), взятый из базы
$date2=time();
if (($date2-(ceil($date1/86400)*86400))>0)
  echo "Наступил новый день";

Оффлайн Million

  • Super hero
  • Постоялец
  • ***
  • Сообщений: 185
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #10 : 25 Сентября 2002, 17:42:11 »
Доктор
зачем эти вычисления: (ceil($date1/86400)*86400) ?
Округлит ceil в большую сторону и получится примерно на 0.5 дня больше.

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #11 : 26 Сентября 2002, 05:13:44 »
Million
Цитировать
зачем эти вычисления: (ceil($date1/86400)*86400) ?
Округлит ceil в большую сторону и получится примерно на 0.5 дня больше

Не понял вопроса... Эти вычисления дают начало следующего дня относительно $date1. Что неясно?

Оффлайн Million

  • Super hero
  • Постоялец
  • ***
  • Сообщений: 185
  • +0/-0
  • 2
    • Просмотр профиля
сравнение дат
« Ответ #12 : 26 Сентября 2002, 11:59:54 »
Доктор
Всё ОК!

Оффлайн PilotV

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #13 : 26 Сентября 2002, 14:10:54 »
Доктор, не лечи мОзги :-)
Твой алгоритм с пробоями. См. мой выше - и будет щастье.
Я так думаю (c)

Оффлайн Доктор

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 487
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
сравнение дат
« Ответ #14 : 26 Сентября 2002, 14:36:18 »
Щас угадаю: не учитывается переход на зимнее/летнее :)) Забыл как-то за азартом алгоритмостроений ;)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28