Интересно почитать… Блог в котором есть много интересной информации…

9 января 2013

Ввод времени доставки заказа в VirtueMart 1.9.x – показываем русский день недели на PHP

Категория: программирование — dmitriano @ 14:10

Страничка подтверждения заказа сидит в файле components/com_virtuemart/themes/vm_mynxx/templates/checkout/get_final_confirmation.tpl.php. Там была строчка:

<?php echo $VM_LANG->_('PHPSHOP_CHECKOUT_CUSTOMER_NOTE') ?>:<br />

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

<div style="font-size: 80%; color: green">
сегодня:
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d"),date("Y"));
echo get_russian_date($tomorrow, true);
?>
</div><br />
Укажите, пожалуйста, удобное для вас время и место встречи с курьером, например:<br />
<div style="font-size: 80%;">
завтра,
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo get_russian_date($tomorrow, true);
?>
с 15:00 до 19:00 по указанному адресу<br />

Код функции get_russian_date есть в статье Русские даты на PHP.

Русский день недели средствами PHP у меня вывести не получилось, пробовал такой код:

<html>
<head>
<title>Использование mktime()</title>
</head>
<body>
<?php
//mb_internal_encoding('UTF-8'); // Устанавливаем кодировку строк
setlocale(LC_TIME, 'ru_RU.UTF-8');
//setlocale(LC_ALL, 'ru');

echo date( "j of F Y, \a\\t g.i a, l", mktime( 13, 30, 0, 1, 22, 1971 ) );

$datetime = mktime( 13, 30, 0, 1, 22, 1971 );

echo '<br>' . strftime("%A", $datetime);

?>
</body>
</html>

этот код выводит следующее:

22 1971f January 1971, at 1.30 pm, Friday
Friday

поэтому пришлось модифицировать функцию get_russian_date следующим образом:

function get_russian_date($datetime, $include_day_of_week)
{
    $d = getdate($datetime);
    
    switch ($d['mon'])
    {
        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;
    }    
    
    $out = $d['mday'] . ' ' . $m;
    
    if ($d['year'] != date("Y"))
    {
        $out = $out . ' ' . $d['year']; 
    }
    
    if ($include_day_of_week)
    {
        $days_of_week = array('воскресенье','понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота');
        
        $day_of_week = $d['wday'];
        
        $out = $days_of_week[$day_of_week] . ", " . $out; 
    }
    
    return $out;
}
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru