Премини към съдържанието
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. Имай предвид, че масивите са нулево базирани.

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


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

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

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

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

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

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

Вход

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

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.