| |
|
|
| | Каким образом узнать дату, на которую приходится последнее воскресенье марта? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(09.11.2007 в 17:16)
| | | если часы переводят на час вперед - это оно :) | |
| |
|
|
| |
|
|
| |
для: elenaki
(09.11.2007 в 17:49)
| | | Это понятно. Собственно, я и ищу тот день, когда эти часы переведут.
Можно, конечно, написать небольшой скриптик для этой цели, но, как я полагаю, наверняка уже существуют отлаженные функции, решающие эту задачу - ведь операция весьма востребована. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(09.11.2007 в 18:06)
| | | А что же не напишите? Собственно и функций никаких сторонних не надо:
echo 'Номер месяца: '.date('n').'<br>';
echo 'Количество дней в месяце: '.date('t').'<br>';
echo 'Число сегодня: '.date('d').'<br>';
echo 'День недели: '.date('w').'<br><br>';
if (date('n')==3 && date('w')==0) {
if (date('d')+7 > date('t')) echo "Переведите время.";
}
|
| |
| |
|
|
| |
|
|
| |
для: sim5
(09.11.2007 в 18:53)
| | | Я имел виду не сообщение о том, что вожделенный миг наступил, а возможность узнать сегодня на какую дату приходится весенний (и осенний) перевод стрелок. У меня как-то очень громоздко получается... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(09.11.2007 в 19:35)
| | | А я вам и не предлагаю заставлять пользователя "жить по новому", это просто пример действия по условию. | |
| |
|
|
| |
|
|
| |
для: sim5
(09.11.2007 в 19:43)
| | | Спасибо, почти так у меня и сделано:
// Ищем последнее воскресенье марта
for ($i = 31; $i >= 20; $i--)
{
$mart = mktime(0, 0, 0, 3, $i, $Year, 0);
if (date ("l", $mart) == "Sunday") break;
}
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.11.2007 в 15:37)
| | | И зачем такие сложности? | |
| |
|
|
| |
|
|
| |
для: sim5
(10.11.2007 в 16:11)
| | | Я же и говорю, что у меня получается громоздко.
А как лучше? Чтобы точно с теми же функциями, но элегантнее. Чисто для опыта. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(10.11.2007 в 16:59)
| | | Функцией date() можно получить четыре параметра даты, остается только определить интересующий день. Зная сколько дней в месяце, текущее число, день недели и что в неделе 7 дней, неужели этого не достаточно, чтобы узнать интересующее вас? Зачем цикл?
if (date('n')==3 && date('w')==0 && date('d')+7 > date('t')) - выполнение этого условия и даст последнее воскресенье марта. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(09.11.2007 в 17:16)
| | |
<?
$l = strtotime("last sunday", mktime(0, 0, 0, 3, 31));
|
Таким образом можно узнать последний день любого месяца в любом году. | |
| |
|
|
| |
|
|
| |
для: Саня
(10.11.2007 в 23:45)
| | | " автор: sim5 (10.11.2007 в 17:12) Зачем цикл?"
Освободиться от цикла весьма заманчиво. Но я не понял, как это сделать с помощью Вашего кода. Сейчас у меня так:
for ($i = 31; $i >= 20; $i--)
{
$mart = mktime(0, 0, 0, 3, $i, $Year, 0);
if (date ("l", $mart) == "Sunday") break;
}
echo $i ; // Получаем 30
|
Я запускаю этот скрипт в любой день и получаю сведения о том, что последнее воскресенье марта приходится на 30-е число.
Если можно, допишите в Вашем коде echo, выводящее аналогичную информацию. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(11.11.2007 в 12:51)
| | |
<?
if (date('n')==3 && date('w')==0 && date('d')+7 > date('t')) echo date('d');
?>
|
| |
| |
|
|
| |
|
|
| |
для: sim5
(11.11.2007 в 12:54)
| | | Ваш код выполняет совершенно другую функцию.
Если скрипт с вашим кодом запустить сегодня, 11 ноября, то он ничего не выводит. Как я понимаю, он даст свое сообщение лишь тогда, когда наступит последнее воскресенье марта. Естественно, что эта функция осуществляется без цикла. Но это совершенно другая задача, и мой пост совсем не об этом.
А меня интересует такой код, который, будучи запущенным в составе скрипта в любой день, выведет дату последнего воскресенья марта. Можете ли вы ЭТУ задачу решить без цикла? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(11.11.2007 в 13:50)
| | | Да, то что я написал, запустит событие именно в день перевода времени, а вы это только поняли? Если вам нужен этот день просто для информации, то и в этом случае нет смыла гонять для этого цикл - смотрите код от Сани. | |
| |
|
|
| |
|
|
| |
для: sim5
(11.11.2007 в 14:48)
| | | *** смотрите код от Сани***
Код от Сани дает последний день месяца. И Саня написал это битым словом. Вы что, этого не поняли?
*** Да, то что я написал, запустит событие именно в день перевода времени, а вы это только поняли? ***
Нет, я это понял раньше. И только не мог понять, зачем Вы его пишете? В этой теме я шесть раз формулировал свой вопрос, как можно его не понять? И Вы все время мне пишете, что я понапрасну использовал цикл и можно обойтись без него, упорно приводя код, который никому не нужен, поскольку заведомо не решает поставленной задачи. А я, считая Вас авторитетным специалистом, второй день пытаюсь понять, в чем моя ошибка и как обойтись без цикла, тогда как ошибки нет и без цикла задача не решаема.
Зачем вы морочите голову? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(11.11.2007 в 17:03)
| | | Вот что я вам скажу. Я исходил сразу из эого:
1. Если мне нужно узнать что-то, то это для того, чтобы произвести определенные действия, в данном случае предупредить пользователя, например, либо установить некую переменную. Вот поэтому я вам так и написал - узнаем, что наступило последнее воскресенье марта, а уж дальше что хотите.
2. Если вам просто нужно знать этот день, например, чтобы просто пользователи не забыли, то можно вообще не нагружать интерпретатор ничем, достаточно посмотреть в календарь (есть в системе) и написать это на странице для пользователей.
3. Что касается вашего кода - после слова for, дальше уже меня ничего не интересовало, потому как считаю это глупым.
4. Что касается кода от Сани, то вы и над ним не хотите подумать - ничего в нем битого нет, стоит только чуточку добавить (в исходнике год не указан, потому будет отображаться март текущего года):
<?
$d = strtotime("last sunday", mktime(0, 0, 0, 3, 31, здесь указать интересующий вас год));
echo date('d', $d);
?>
|
И код отобразит вам то, что вы так желаете.
Не я вам морочу голову, а вы сами себе. Мозгами шевелить надо, если вы хотите писать программы.
PS. Можете меня вообще считать за "NULL", мне все равно. Что конкретно касается ваших раздумий над вашей ошибкой, то вы практически на вопрос - "Сколько раз поместиться 2 в 10", написали цикл в котором последовательно вычитали 2 из 10, вместо того, чтобы разделить 10 на 2. | |
| |
|
|
| |
|
|
| |
для: sim5
(11.11.2007 в 17:53)
| | | С интересом слежу за дискуссией.
sim5, код Сани действительно работает.
Но вы, при всем уважении, раз за разом слали человеку бессмысленные образцы кода. Бессмысленные с точки зрения поставленной задачи.
Да еще со снисходительной интонацией. Мне бы на его месте это куда раньше надоело... | |
| |
|
|
| |
|
|
| |
для: Shiva
(11.11.2007 в 18:42)
| | | Можеть быть и так. Но в чем состоит его задача - узнать последнее воскресенье месяца? Если то, что я написал, узнает поледний день субботы августа месяца - пусть в меня каждый бросит камень. Тогда уж сразу задача, думаю, должна была дополнятся еще и "для чего".
Собственно "для чего" нужно это автору, стало известно немного позже, тем не менее, вопросы задавались мне, а не Сане, который дал то что нужно, однако автор и этого не понял.
Ответ на задачу кроется в готовом виде в "Свойства: Дата и время" системного календаря, это мое мнение, а вы можете думать иначе. | |
| |
|
|