Здравствуйте, нашел пару вариантов увеличения даты и вывода русского месяца.. вот что получилось: Код (Text): <?php $tomorrow = date ('Y-m-d', strtotime ('+1 days')); $yesterday = date ('Y-m-d', strtotime ('-1 days')); $date = explode(".", date("d.m.Y")); switch ($date[1]) { case 1: $m='января'; break; case 2: $m='февраля'; break; case 3: $m='марта'; break; case 4: $m='апреля'; break; case 5: $m='мая'; break; case 6: $m='июня'; break; case 7: $m='июля'; break; case 8: $m='августа'; break; case 9: $m='сентября'; break; case 10: $m='октября'; break; case 11: $m='ноября'; break; case 12: $m='декабря'; break; } $ru_tom = explode("-", $tomorrow); switch ($ru_tom[1]) { case 1: $m1='января'; break; case 2: $m1='февраля'; break; case 3: $m1='марта'; break; case 4: $m1='апреля'; break; case 5: $m1='мая'; break; case 6: $m1='июня'; break; case 7: $m1='июля'; break; case 8: $m1='августа'; break; case 9: $m1='сентября'; break; case 10: $m1='октября'; break; case 11: $m1='ноября'; break; case 12: $m1='декабря'; break; } $ru_yes = explode("-", $yesterday); switch ($ru_yes[1]) { case 1: $m2='января'; break; case 2: $m2='февраля'; break; case 3: $m2='марта'; break; case 4: $m2='апреля'; break; case 5: $m2='мая'; break; case 6: $m2='июня'; break; case 7: $m2='июля'; break; case 8: $m2='августа'; break; case 9: $m2='сентября'; break; case 10: $m2='октября'; break; case 11: $m2='ноября'; break; case 12: $m2='декабря'; break; } ?> <div class="shots"> <div class="first_shot"><?php echo $ru_yes[2]." ".$m2."<br>".$ru_yes[0]; ?></div> <div class="second_shot"><?php echo $date[0]." ".$m."<br>".$date[2]; ?></div> <div class="third_shot"><?php echo $ru_tom[2]." ".$m1."<br>".$ru_tom[0]; ?></div> </div> Но, хоть я и новичок, чует мое сердце, что можно все это упростить... а то уж больно громоздко все выглядит... Подскажите как оптимизировать.[/code]
PHP: <?php /** * Массив с названиями месяцев * в родительном падеже */ $months = array(1 => "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря" ); /** * Переберем дни и сформируем дату */ foreach(array("yesterday", "today", "tomorrow") as $day) { ${$day} = sprintf("%d %s %d", date("d", strtotime($day)), $months[date("n", strtotime($day))], date("Y", strtotime($day)) ); } ?> <div> <div><?=$yesterday?></div> <div><?=$today?></div> <div><?=$tomorrow?></div> </div>
календарик в jQuery превосходный, если что. http://jqueryui.com/demos/datepicker/ русский к нему есть
Apple Ну подход во всяком случае рабочий, просто он не рациональный. Вопрос по вашему коду: мне необходимо вывести дату чтобы после месяца был переход на следующую строку. В вашем примере дата будет выведена в одну строчку. P.S. А в функции sprintf можно указать тэг <br>... понятно. Спасибо, буду разбираться)
PHP: <?php // Где-то на старте системы или в php.ini setlocale(LC_ALL, 'ru_RU'); echo strftime('%d-%B', time() - 86400); echo strftime('%d %B'); echo strftime('%d %B', time() + 86400); ?> UPD на *nix при условиях наличия нужных локалей с кодировками (locale -a | grep ru) работает точно. Окончания месяцев... Хм... ну как-то там оно на уровне локали исправлялось вроде как
Apple Понятно, то есть для каждого элемента массива создается переменная. Не понятно теперь почему в yesterday попадает предыдущая дата, а в tomorrow следующая?... Даже скорее не понятно как получается yesterday.. потому что к нему потом, как я понял добавляется strtotime ($day)... Не понял почему отсчет идет со вчерашнего дня..