Премини към съдържанието
miss89

Показване на ден от седмицата на български

    Препоръчан отговор


    Здравейте,

    трябва да покажа ден от седмицата на български. Опитах различни варианти на setlocale, но отново е на английски . Използвах:

    $loc = setlocale(LC_ALL, 'bg.utf8');
    
    echo  $loc;
    echo strftime(" %A");
    

    и :

    $loc = setlocale(LC_ALL, 'bg_BG.UTF-8');
    
    echo  $loc;
    echo strftime(" %A");
    

    По какъв начин мога да направя да бъде на български?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    http://php.net/setlocale

     

    Може би трябва да използваш масиви с данни за месеците и дните от седмицата.

    Нещо такова :

            if ($_SESSION['lang']=='ru') {
                $amonths = array('01'=>'Январь','02'=>'Февраль','03'=>'Март','04'=>'Апрель','05'=>'Май','06'=>'Июнь','07'=>'Июль','08'=>'Август','09'=>'Сентябрь','10'=>'Октябрь','11'=>'Ноябрь','12'=>'Декабрь');        
                $adays = array('0'=>'Воскресение','1'=>'Понедельник','2'=>'Вторник','3'=>'Среда','4'=>'Четверг','5'=>'Пятница','6'=>'Субота');
            } else {
                $amonths = array('01'=>'January','02'=>'February','03'=>'March','04'=>'April','05'=>'May','06'=>'June','07'=>'Jule','08'=>'August','09'=>'September','10'=>'October','11'=>'November','12'=>'December');        
                $adays = array('0'=>'Sunday','1'=>'Monday','2'=>'Tuesday','3'=>'Wednesday','4'=>'Thursday','5'=>'Friday','6'=>'Saturday');
            }
    
                echo $adays[strftime('%w')].', '.$amonths[strftime('%m')].' '.strftime('%d').', '.strftime('%Y').'   ';

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
    setlocale (LC_TIME, 'bg_BG.utf8','bg');
    echo strftime(" %A");
    

    Нещо такова?

     

    Така енкодинга не е добре, utf8 не работи, не е кирилизирано.

     

    http://php.net/setlocale

     

    Може би трябва да използваш масиви с данни за месеците и дните от седмицата.

    Нещо такова :

            if ($_SESSION['lang']=='ru') {
                $amonths = array('01'=>'Январь','02'=>'Февраль','03'=>'Март','04'=>'Апрель','05'=>'Май','06'=>'Июнь','07'=>'Июль','08'=>'Август','09'=>'Сентябрь','10'=>'Октябрь','11'=>'Ноябрь','12'=>'Декабрь');        
                $adays = array('0'=>'Воскресение','1'=>'Понедельник','2'=>'Вторник','3'=>'Среда','4'=>'Четверг','5'=>'Пятница','6'=>'Субота');
            } else {
                $amonths = array('01'=>'January','02'=>'February','03'=>'March','04'=>'April','05'=>'May','06'=>'June','07'=>'Jule','08'=>'August','09'=>'September','10'=>'October','11'=>'November','12'=>'December');        
                $adays = array('0'=>'Sunday','1'=>'Monday','2'=>'Tuesday','3'=>'Wednesday','4'=>'Thursday','5'=>'Friday','6'=>'Saturday');
            }
    
                echo $adays[strftime('%w')].', '.$amonths[strftime('%m')].' '.strftime('%d').', '.strftime('%Y').'   ';

    Аз взимам датата от базата и тогава вече я правя във формат да показва само деня.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Аз взимам датата от базата и тогава вече я правя във формат да показва само деня.

     

    Още по-лесно тогава.


    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Още по-лесно тогава.

    Със setlocale ли? Всъщност не я взимам от базата :D  първо така я взимах, но сега я взимам така:

     $now= new DateTime('now');
     $date=$now->modify('+1 day');                    
                
     echo $date->format('l');
    

    Следващия ден.

     

    Редактирано от miss89 (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Със setlocale ли?

     

    На чий сървър работи скрипта ти ?

    В линка за setlocalе е обяснено, че за Windows системи setlocale използва информацията от Regional and Language settings.

    Редактирано от Ken (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    На чий сървър работи скрипта ти ?

    В линка за setlocalе е обяснено, че за Windows системи setlocale използва информацията от Regional and Language settings.

    На localhost и пиша на Codeigniter

    Редактирано от miss89 (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    На localhost

     

    Така какво излиза ?

     

    setlocale(LC_ALL,'bg_BG.CP1251 ')

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Така енкодинга не е добре, utf8 не работи, не е кирилизирано.

    View -> Character Encoding -> Cyrillic (Windows)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Използвай масивите.

     $now= new DateTime('now');
     $date=$now->modify('+1 day');                    
                
    echo $date->format('l'); 
    
    $days = array('Monday'=>'Понеделник','Tuesday'=>'Вторник','Wednesday'=>'Сряда','Thursday'=>'Четвъртък',
        'Friday'=>'Петък','Saturday'=>'Събота','Sunday'=>'Неделя');
    if($date->format('l') ==$days//как да сравня двата дни ) { echo}
    

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Просто изведи съответната стойност на масива спрямо числото за ден от седмицата.

     

    echo $days[число];

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Просто изведи съответната стойност на масива спрямо числото за ден от седмицата.

     

    echo $days[число];

    Аз използвам това- за да ми притни утрешния ден.

    $now= new DateTime('now');
                                $date=$now->modify('+1 day');                    
                
                                echo $date->format('l'); 
    
    

    Като ми покаже Saturday как с този масив да да ми покаже Събота?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове
     $now= new DateTime('now');
     $now->modify('+1 day');                    
               
    $days = array(1=>'Понеделник',2=>'Вторник',3=>'Сряда',4=>'Четвъртък',5=>'Петък',6=>'Събота',7=>'Неделя');
    
    echo $days[$now->format('w')].'<br />';
    

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Може и без да се пишат числата

     

    <!DOCTYPE html>
    <html>
    
    <head>
    <meta charset="utf-8">
    </head>
    
    
    <body>
    
    <?php
    
    $bulday = array("Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота");
    
    echo $bulday[date('w')];
    
    ?>
    
    </body>
    </html>
    
    Редактирано от Реджеп Иведик (преглед на промените)
    • Харесва ми 1

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Благодаря, работи! :)

     

    Всъщност за правилната работа на скрипта или трябва да използваш format('w') и масив започваш с Неделя, или format('N') за масив започващ с Понеделник.

    P.S. Имай предвид, че масивите са нулево базирани.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.