Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> количество дней в месяце, как подсчитать 
V
    Опции темы
nextzi0
Дата 6.2.2009, 14:22 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

Репутация: нет
Всего: нет



Как это сделать для любого месяца любого года?
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
Viroman
Дата 6.2.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Я так делал

Код

function yearmonth($year) {
if($year%4==0) { $yearar=array(1=>31,2=>29,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
else { $yearar=array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
return $yearar;
}


а можно и с месяцем.

Код

function yearmonth($year,$month) {
if($year%4==0) { $yearar=array(1=>31,2=>29,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
else { $yearar=array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
return $yearar[$month];
}


А можно чуть украсивить.
Код

function yearmonth($year,$month) {
if($year%4==0) { $feb=29; } else { $feb=28; }
$yearar=array(1=>31,2=>$feb,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31);
return $yearar[$month];
}



Это сообщение отредактировал(а) Viroman - 6.2.2009, 15:07
PM MAIL   Вверх
enof
Дата 6.2.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(Viroman @  6.2.2009,  14:55 Найти цитируемый пост)
function yearmonth($year) {
if($year%4==0) { $yearar=array(1=>31,2=>29,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
else { $yearar=array(1=>31,2=>28,3=>31,4=>30,5=>31,6=>30,7=>31,8=>31,9=>30,10=>31,11=>30,12=>31); } 
return $yearar;

 smile 

Код

echo date("t",mktime(0,0,0,2,1,1988));

http://php.net/date + http://php.net/mktime
PM MAIL ICQ Skype   Вверх
Viroman
Дата 6.2.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Я знаю, что так можно, но мне так не нужно  smile  задолбали ограничения пхп, до 1800 года и после 2040, вот и решил делать на столетия всё сразу smile
PM MAIL   Вверх
enof
Дата 6.2.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(Viroman @  6.2.2009,  15:08 Найти цитируемый пост)
задолбали ограничения пхп

Php здесь не виноват.
PM MAIL ICQ Skype   Вверх
nextzi0
Дата 6.2.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

Репутация: нет
Всего: нет



спасибо всем ж)
а здесь :
Код

 echo date("t",mktime(0,0,0,2,1,1988));

я так понял - не важно, какой день? (5ый параметр - день)
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
enof
Дата 6.2.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(nextzi0 @  6.2.2009,  15:37 Найти цитируемый пост)
я так понял - не важно, какой день? (5ый параметр - день) 

важно.
Код

echo date("t",mktime(0,0,0,2,30,1988));
echo date("t",mktime(0,0,0,3,0,1988));
echo date("t",mktime(0,0,0,1,32,1988));

PM MAIL ICQ Skype   Вверх
Viroman
Дата 6.2.2009, 17:15 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Цитата

Php здесь не виноват. 

Если честно, мне это то звёздочки, что именно виновато, но пхп как раз таки в этом виноват в большей степени, раз через зад всё делается, через системные запросы на уникс время. 
PM MAIL   Вверх
enof
Дата 6.2.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(Viroman @  6.2.2009,  17:15 Найти цитируемый пост)

Если честно, мне это то звёздочки, что именно виновато, но пхп как раз таки в этом виноват в большей степени, раз через зад всё делается, через системные запросы на уникс время.  

Ну если у вас получится реализовать все это не "через зад" средствами пхп, чтобы скорость работы не отличалась + удобно было работать, многие вам думаю спасибо скажут smile 
PM MAIL ICQ Skype   Вверх
nextzi0
Дата 10.2.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

Репутация: нет
Всего: нет



Цитата(enof @ 6.2.2009,  16:04)
Цитата(nextzi0 @  6.2.2009,  15:37 Найти цитируемый пост)
я так понял - не важно, какой день? (5ый параметр - день) 

важно.
Код

echo date("t",mktime(0,0,0,2,30,1988));
echo date("t",mktime(0,0,0,3,0,1988));
echo date("t",mktime(0,0,0,1,32,1988));


Я имею ввиду при неизменном четвертом параметре, мне же нужно количество дней в месяце, тоесть там ведь любой день недели попадает в тот месяц, который я укажу (от 1 до 28 по крайней мере)

Это сообщение отредактировал(а) nextzi0 - 10.2.2009, 10:34
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
enof
Дата 10.2.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



nextzi0, Да, если нужно только количество дней в месяце, разницы нет никакой.
PM MAIL ICQ Skype   Вверх
krundetz
Дата 10.2.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Viroman @  6.2.2009,  17:15 Найти цитируемый пост)
Если честно, мне это то звёздочки, что именно виновато, но пхп как раз таки в этом виноват в большей степени, раз через зад всё делается, через системные запросы на уникс время.  

учи матчасть, так везде делается, в любом языке програмирования

Цитата(enof @  10.2.2009,  12:07 Найти цитируемый пост)
nextzi0, Да, если нужно только количество дней в месяце, разницы нет никакой. 

 smile 
как это никакой, ты невнимательно прочитал вопрос, как раз при одном и том же значение месяца и значение дня большем чем число дней в этом месяце, у нас будет выводиться число дней следующего месяца, если же значения дня меньше или равно значению количества дней в месяце, система выдаст нам корректный день

nextzi0, проверяй коректность даты при помощи checkdate()

Это сообщение отредактировал(а) krundetz - 10.2.2009, 19:55


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
enof
Дата 10.2.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(krundetz @  10.2.2009,  19:46 Найти цитируемый пост)

как это никакой, ты невнимательно прочитал вопрос, как раз при одном и том же значение месяца и значение дня большем чем число дней в этом месяце, у нас будет выводиться число дней следующего месяца, если же значения дня меньше или равно значению количества дней в месяце, система выдаст нам корректный день

Ну я про это и говорил.
Цитата(enof @  6.2.2009,  16:04 Найти цитируемый пост)
echo date("t",mktime(0,0,0,2,30,1988));
echo date("t",mktime(0,0,0,3,0,1988));
echo date("t",mktime(0,0,0,1,32,1988));


Просто это сбило:

Цитата(nextzi0 @  6.2.2009,  15:37 Найти цитируемый пост)
я так понял - не важно, какой день? (5ый параметр - день) 

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
Я имею ввиду при неизменном четвертом параметре

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
там ведь любой день недели

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
от 1 до 28 

 smile Или я опять чет недогоняю?
PM MAIL ICQ Skype   Вверх
krundetz
Дата 10.2.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(enof @ 10.2.2009,  20:04)
Цитата(nextzi0 @  6.2.2009,  15:37 Найти цитируемый пост)
я так понял - не важно, какой день? (5ый параметр - день) 

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
Я имею ввиду при неизменном четвертом параметре

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
там ведь любой день недели

Цитата(nextzi0 @  10.2.2009,  10:34 Найти цитируемый пост)
от 1 до 28 

 smile Или я опять чет недогоняю?

nextzi0 проясни пожалуйста ситуацию


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
nextzi0
Дата 11.2.2009, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

Репутация: нет
Всего: нет



Цитата(krundetz @ 10.2.2009,  19:46)
 smile 
как это никакой, ты невнимательно прочитал вопрос, как раз при одном и том же значение месяца и значение дня большем чем число дней в этом месяце, у нас будет выводиться число дней следующего месяца, если же значения дня меньше или равно значению количества дней в месяце, система выдаст нам корректный день

nextzi0, проверяй коректность даты при помощи checkdate()

Все правильно, и enof меня тоже понял правильно, но ты не понял его (извините за тафталогию =)), поэтому я и написал кол-во дней от 1 до 28 - такое количество есть в каждом месяце, тоесть, если подставить число от 1 до 28 в 5ый параметр для неизменных остальных (с нужным нам месяцем), то функция как раз выдаст нам нужное кол-во дней в этом месяце.
У меня тут еще вопрос ) Хочу узнать, с какого дня недели начинается первое число нужного мне месяца
делаю так:

Код

$day = date('w',mktime(0,0,0,$month,1,$year))


как то странно работает, не всегда выдает правильный день, $month - от 1 до 12, $year - от 2000 до 2020

Добавлено через 12 минут и 32 секунды
Все работает корректно, извините, это я сам немного не допонял  smile 
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.