Здравствуйте, гость ( Вход | Восстановить аккаунт )
1.11.2010, 17:53
Сообщение
#1
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 960 Регистрация: 20.11.2005 Пользователь №: 810 |
Вывод определённого сообщения каждые 4-дня. До 1-го ноября всё было пучком, а вот первого, разность между датами равняется 15, вместо 16. Где я тупанул, подскажите?
<?php
setlocale(LC_TIME, "ru-RU"); // Дата одного из респов, начало отсчёта для счётчика $sd=date ("d-M-Y", mktime(0,0,0, 10, 16, 2010)); // Текущая дата $cd=date ("d-M-Y", mktime(0,0,0)); // Периода респа. В данном случае 4 дня $i=4; $zd=($cd-$sd)%$i; $dd=$i-$zd; if ($zd==0) { echo ("<div><font color=#ff0000><b>Сегодня большой респ!</font></b> Cбор в Ventrillo в: <b>10:00 (по Москве)</b></div>"); } else { echo ("<div>Следующий большой респ: <b>".strftime("%A %e %B %Y", mktime(0, 0, 0, date("m"), date("d")+$dd , date("Y")))."</b></div>"); } ?> -------------------- "Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)
|
|
|
|
![]() |
1.11.2010, 20:47
Сообщение
#2
|
|
![]() жмот ![]() ![]() ![]() Группа: Пользователи Сообщений: 1658 Регистрация: 18.6.2005 Из: 1 777 Пользователь №: 635 |
А чему равна cd или zd, в определенный момент времени? В каком формате переменная?
Ваще прально он тебе минусует. 1-16= -15 -------------------- Я,как зверь,зализываю раны...
И, как кофе,растворяю горе... Пахну счастьем,солнцем и кальяном... Приезжай! Скучаю! (подпись)"Море!" |
|
|
|
1.11.2010, 22:40
Сообщение
#3
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 937 Регистрация: 1.11.2005 Из: 1 134 Пользователь №: 767 |
Разность между 1 ноября и 16 октября - 16 дней.
? DateDiff("d", "16-Oct-2010", "1-Nov-2010") 16 В чем проблема, невовремя сообщение выходит? -------------------- у айтишника прежде всего должно быть развито два основных навыка: знание английского и умение гуглить (с) башорг
|
|
|
|
2.11.2010, 7:15
Сообщение
#4
|
|
![]() Добродушный циник ![]() ![]() ![]() Группа: Пользователи Сообщений: 680 Регистрация: 20.4.2007 Из: жалости... Пользователь №: 2713 |
О чём речь ваще?!
-------------------- Рациональные законы мышления не охватывают плоскость чувственного воcприятия бытия
|
|
|
|
2.11.2010, 9:00
Сообщение
#5
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 960 Регистрация: 20.11.2005 Пользователь №: 810 |
А чему равна cd или zd, в определенный момент времени? В каком формате переменная? $sd=date ("d-M-Y", mktime(0,0,0, 10, 16, 2010)) - задана вручную, выводит 16-Oct-2010$cd=date ("d-M-Y", mktime(0,0,0)) - сегодняшняя дата, обновляется каждый раз, когда обновляется страница. $zd - это остаток при делении разницы между днём сегодняшним ($cd) и стартовой датой ($sd). mktime - Функция возвращает метку времени Unix, соответствующую дате и времени, заданным аргументами. Метка времени - это целое число равное разнице в секундах между заданной датой/временем и началом Эпохи Unix (The Unix Epoch, 1 января 1970 г). Соответственно $sd и $cd - целое число. date_diff У хостера 5.2.5. Или ты предлагаешь через mysql?(PHP 5 >= 5.3.0) Он мне 1-го числа выдал неправильное сообщение, т.е. не удовлетворял первому условию и вывел второе сообщение вместо первого. Да, Sight прав, у меня вычитаются дни, а мне надо чтобы вычитались даты. Пойду чего-нибудь покурю. Сообщение отредактировал ku7mich - 2.11.2010, 9:04 -------------------- "Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)
|
|
|
|
2.11.2010, 9:15
Сообщение
#6
|
|
![]() Бакалавр ![]() ![]() ![]() Группа: Пользователи Сообщений: 74 Регистрация: 3.7.2010 Пользователь №: 9959 |
для подсчета разницы в днях используй date с параметром z
z Порядковый номер дня в году (нумерация с 0) От 0 до 365
|
|
|
|
2.11.2010, 9:21
Сообщение
#7
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 960 Регистрация: 20.11.2005 Пользователь №: 810 |
Не подходит. Что мне использовать через два года? Придётся снова дату начала отсчёта менять.
Сейчас нашёл самописную функцию datediff или вариант чуть попроще. -------------------- "Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)
|
|
|
|
2.11.2010, 17:48
Сообщение
#8
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 937 Регистрация: 1.11.2005 Из: 1 134 Пользователь №: 767 |
Попроще поясни, в чем проблема? На мой взгляд, код у тя работает верно. Дело не в функциях, а в том, чего ты хотел добиться.
-------------------- у айтишника прежде всего должно быть развито два основных навыка: знание английского и умение гуглить (с) башорг
|
|
|
|
2.11.2010, 23:45
Сообщение
#9
|
|
|
Бакалавр ![]() ![]() ![]() Группа: Пользователи Сообщений: 94 Регистрация: 20.9.2010 Пользователь №: 11331 |
попробуй так:
<?php
setlocale(LC_TIME, "ru-RU"); // Дата одного из респов, начало отсчёта для счётчика //$sd=date ("d-M-Y", mktime(0,0,0, 10, 16, 2010)); $sd=date (mktime(0,0,0, 10, 16, 2010)); // Текущая дата //$cd=date ("d-M-Y", mktime(0,0,0)); $cd=date (mktime(0,0,0)); //$cd=time(); // Периода респа. В данном случае 4 дня $i=4; $cd=($cd-($cd % 100))/100; $sd=($sd-($sd % 100))/100; $zd=(($cd-$sd)/864)%$i; $dd=$i-$zd; if ($zd==0) { echo ("<div><font color=#ff0000><b>Сегодня большой респ!</font></b> Cбор в Ventrillo в: <b>10:00 (по Москве)</b></div>"); } else { echo ("<div>Следующий большой респ: <b>".strftime("%A %e %B %Y", mktime(0, 0, 0, date("m"), date("d")+$dd , date("Y")))."</b></div>"); } ?> |
|
|
|
2.11.2010, 23:49
Сообщение
#10
|
|
|
Бакалавр ![]() ![]() ![]() Группа: Пользователи Сообщений: 94 Регистрация: 20.9.2010 Пользователь №: 11331 |
Делением на 100 обрубаем время от даты (альтернатива div, в php не припомню такой функции), затем разницу делим на 864 - один день. Не уверен на 100%, но должно работать, по крайней мере не извращаться со сторонними функциями.
|
|
|
|
13.12.2010, 10:14
Сообщение
#11
|
|
![]() Гуру ![]() ![]() ![]() Группа: Пользователи Сообщений: 960 Регистрация: 20.11.2005 Пользователь №: 810 |
Спасибо, работает
-------------------- "Как странно – когда исчезает темнота, перестаешь видеть свет!" (С. Лукьяненко)
|
|
|
|
![]() ![]() ![]() |
| Сейчас: 11.11.2026, 23:33 |