- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
if ( ! function_exists('days_in_month'))
{
function days_in_month($month = 0, $year = '')
{
if ($month < 1 OR $month > 12)
{
return 0;
}
if ( ! is_numeric($year) OR strlen($year) != 4)
{
$year = date('Y');
}
if ($month == 2)
{
if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0))
{
return 29;
}
}
$days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
return $days_in_month[$month - 1];
}
}
istem 19.09.2010 23:03 # 0
This is obvious 19.09.2010 23:26 # 0
istem 20.09.2010 00:03 # 0
Kornew 20.09.2010 00:59 # +1
*ухты, високосный пишется через "и" О_о*
Kornew 20.09.2010 07:23 # 0
($year % 4 == 0 AND $year % 100 != 0)
- этой вполне достаточно =)
murz 20.09.2010 07:38 # +2
Kornew 20.09.2010 16:31 # 0
murz 20.09.2010 07:38 # 0
Год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400
istem 20.09.2010 09:00 # 0
murz 20.09.2010 07:34 # +3
Скажите, как Вы проверите количество дней в месяце, например, в 1955 или 2658 году с помощью date('t')?
DrFreez 20.09.2010 15:20 # 0
если так мыслить, то по идее ребята должны были тогда уж написать костылей для всех функций даты.
пысы
[21:25:57] drfreez@korriban:~$ php -r "echo date('c t', mktime(21, 24, 36, 2, 20, 2658)).\"\n\";"
2658-02-20T21:24:36+08:00 28
[21:26:33] drfreez@korriban:~$ php -r "echo date('c t', mktime(21, 24, 36, 2, 20, 1955)).\"\n\";"
1955-02-20T21:24:36+08:00 28
[21:26:45] drfreez@korriban:~$ php -r "echo date('c t', mktime(21, 24, 36, 2, 20, 2004)).\"\n\";"
2004-02-20T21:24:36+08:00 29
[21:26:50] drfreez@korriban:~$ php -r "echo date('c t', mktime(21, 24, 36, 2, 20, 2010)).\"\n\";"
2010-02-20T21:24:36+08:00 28
[21:26:53] drfreez@korriban:~$ php -r "echo date('c t', mktime(21, 24, 36, 2, 20, 2660)).\"\n\";"
2660-02-20T21:24:36+08:00 29
DrFreez 20.09.2010 15:31 # 0
murz 20.09.2010 15:44 # +2
Date работает с Unix Timestamp - это количество секунд прошедших с начала эпохи (1.1.1970 года), а так как это целочисленное значение, то ограничено 2038 годом. Если у Вас комп 64-х битный, то тогда может и намного больше - хватит на несколько сотен или тысяч лет вперед.
Отрицательные значения (т.е. до 1970 года) до PHP5.1 не поддерживалось Windows и, я полагаю, тоже ограничены в районе 1900 годом (для 32-х битных систем).
Надеюсь теперь понятно, почему это функция не говнокод.
murz 20.09.2010 15:49 # 0
absolut 20.09.2010 16:08 # +3
А о потомках вы подумали ? Что за безответственность :))
murz 20.09.2010 16:20 # 0
3.14159265 20.09.2010 12:35 # 0
разве что array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) - куда -нить поглобальней вынести или брать уже готовое. но это не критично
судя по всему многие плюсовали по незнанию зачем это
if ($year % 400 == 0 OR ($year % 4 == 0 AND $year % 100 != 0))
Edit: БЛЯЯ. промахнулся и тоже плюсанул.
-2 мне и коду
Arigato 19.10.2010 21:50 # 0
Vidog 05.11.2010 11:46 # +1
Aligan 24.08.2021 02:09 # 0