Strona 1 z 1

[PHP] Funkcja formatująca datę

: 19 paź 2010, 13:44:42
autor: czarodziej
Do formatowania daty używam kodu ze strony:
http://blog.vokiel.com/php-date-polskie ... e-strftime:

Kod: Zaznacz cały

function dateV($format,$timestamp=null){
    $to_convert = array(
        'l'=>array('dat'=>'N','str'=>array('Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota','Niedziela')),
        'F'=>array('dat'=>'n','str'=>array('styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzień')),
        'f'=>array('dat'=>'n','str'=>array('stycznia','lutego','marca','kwietnia','maja','czerwca','lipca','sierpnia','września','października','listopada','grudnia'))
    );
    if ($pieces = preg_split('#[:/.\-, ]#', $format)){
        if ($timestamp === null) { $timestamp = time(); }
        foreach ($pieces as $datepart){
            if (array_key_exists($datepart,$to_convert)){
                $replace[] = $to_convert[$datepart]['str'][(date($to_convert[$datepart]['dat'],$timestamp)-1)];
            }else{
                $replace[] = date($datepart,$timestamp);
            }
        }
        $result = str_replace($pieces,$replace,$format);
        return $result;
    }
} 
Jak ją teraz wykonam

Kod: Zaznacz cały

dateV('j f Y G:i');
//zwróci : 19 paźdz40ern40ka 2010 13:40     
Dlaczego literkę 'i' zamienia mi w nazwie miesiąca na aktualną minutę ??Może ktoś pomóc ??
Dodam że jak wykonam:

Kod: Zaznacz cały

dateV('j f Y');
//zwróci : 19 października 2010    
Dlaczego tak się dzieje ?? :crazy:

Re: [PHP] Funkcja formatująca datę

: 19 paź 2010, 19:30:29
autor: przytulanek81
Poczytaj komentarze tam pod artykułem, jest wyjaśniona przyczyna

Re: [PHP] Funkcja formatująca datę

: 20 paź 2010, 13:45:42
autor: czarodziej
Powiem ci nawet więcej -> już ją naprawili.Ale zauważ że używam już kodu po modyfikacjach,gdzie nie powinno być tego problemu. Mimo to problem dalej jest, więc może ktoś na tym forum go znajdzie.

Oczywiście można to obejść:

Kod: Zaznacz cały

dateV('j f Y ').dateV('G:i')
//zwróci : 19 października 2010 17:40  
Ale to noob'skie rozwiązanie