|
| |
|
|
| |
для: Trianon
(30.11.2007 в 00:45)
| | | Да, вот теперь всё корректно!
Спасибо! | |
| |
|
|
| |
|
|
| |
для: Trianon
(30.11.2007 в 00:47)
| | | Я несколько поторопился с оценкой...
На первый взгляд, работает нормально, но при подробном тестировании вылезли нюансы. А может, я чего делаю неверно, с этими функциями я как-то не очень. В общем, вот при таком раскладе:
function dmg ($d, $m, $g) // день месяц год
{
$g = $g - 1900;
if ($m > 2)
{
$m = $m - 2;
}
else
{
$m = $m + 10;
$g = $g - 1;
}
$days = ((int)(365.25 * $g) + (int)(30.59 * $m) + $d + 1) % 7;
if ($days == 1) $day = "Monday";
if ($days == 2) $day = "Tuesday";
if ($days == 3) $day = "Wednesday";
if ($days == 4) $day = "Thursday";
if ($days == 5) $day = "Friday";
if ($days == 6) $day = "Saturday";
if ($days == 7) $day = "Sunday";
return $day;
}
$abc = dmg(30, 11, 1981);
echo "<br> День недели - $abc" ;
|
получается Понедельник, хотя на самом деле 30 ноября 1981 года было воскресенье. А если задать 30 ноября 1980 года, то получаем
Undefined variable: day in w:\home\lucky\www\21\otvet.php on line 90
|
что соответствует return $day; | |
| |
|
|
| |
|
|
| |
для: XP
(29.11.2007 в 23:56)
| | | В конце концов есть определение високосного года.
Кратным четырем он был как раз у Цезаря.
Эта функция за пределами 1901....2100 будет работать через ж.
Поправка. По воскресеньям она вообще будет отдыхать. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(29.11.2007 в 23:50)
| | | Если уж Вы применяете честную функцию выбора дня недели, надо честно указывать и сам календарь, а не пытаться жить что называется по старому стилю.
$yy = 2007; $mm = 11; $dd = 29;
$jd = cal_to_jd(CAL_GREGORIAN, $mm,$dd, $yy);
$juliant = JDDayOfWeek($jd,1);
echo "$yy:$mm:$dd:$jd : $juliant<br/>\r\n";
|
| |
| |
|
|
| |
|
|
| |
для: XP
(29.11.2007 в 23:56)
| | | Как то это всё так просто у Вас получилось, я прям не знаю, что и сказать...
И - главное! - отлично работает!
БОЛЬШОЕ спасибо! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(29.11.2007 в 23:50)
| | | вот..
<?
function dmg ($d, $m, $g) // день месяц год
{
$g = $g - 1900;
if ($m > 2)
{
$m = $m - 2;
}
else
{
$m = $m + 10;
$g = $g - 1;
}
$days = ((int)(365.25 * $g) + (int)(30.59 * $m) + $d + 1) % 7;
if ($days == 1) $day = "Monday";
if ($days == 2) $day = "Tuesday";
if ($days == 3) $day = "Wednesday";
if ($days == 4) $day = "Thursday";
if ($days == 5) $day = "Friday";
if ($days == 6) $day = "Saturday";
if ($days == 7) $day = "Sunday";
return $day;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: XP
(29.11.2007 в 23:39)
| | | Функция интересная, но мне надо найти день недели... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(29.11.2007 в 20:50)
| | | можно написать свою функцию
<?
function dmg ($d, $m, $g) // день месяц год
{
$g = $g - 1900;
if ($m > 2)
{
$m = $m - 2;
}
else
{
$m = $m + 10;
$g = $g - 1;
}
$days = (int)(365.25 * $g) + (int)(30.59 * $m) + $d + 1;
return $days % 7;
}
?>
|
функция возвращает номер дня. Работает от 1900г. до 2100г. | |
| |
|
|
| |
|
|
| |
для: Trianon
(29.11.2007 в 21:13)
| | | Попробовал так:
$jd = JulianToJD(11, 29, 2007);
echo "$jd\n";
echo "<br>" ;
$juliant = JDDayOfWeek($jd,1);
echo "$juliant\n";
|
Выдает Wednesday, хотя сегодня, вроде бы, четверг! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(29.11.2007 в 20:50)
| | | применяя функции для работы с юлианским календарем.
gregoriantojd()
в принципе, конечно, date() должно работать от 1901 года, но в win-реализациях с преобразованием отрицательных значений почему-то имеют место баги. | |
| |
|
|
|