Ciekawe i istotne rozwiązania dla stron www

lelahel.pl >php odniesienia

Data po polsku w php

Data po polsku z użyciem funkcji php

1.Używam funkcji strftime():

<?php
echo strftime("%A, %d %B %Y");
?>

Rezultat:

Sunday, 05 February 2012

2.Używam funkcji setlocale():

<?php
setlocale(LC_TIME, "poland");
echo strftime("%A, %d %B %Y");
?>

Rezultat:

Sunday, 05 February 2012

3.A może użyję funkcji jak niżej:

<?php
$dateString = "%B %d., %A";
    setlocale(LC_ALL,'poland');
    $res=strftime($dateString);
    echo(iconv('ISO-8859-1', 'UTF-8', $res));
?>
February 05., Sunday

4.Mam funkcję sprawdzającą dostępność 'locale-a' :

<?php
function list_system_locales(){
    ob_start();
    system('locale -a');
    $str = ob_get_contents();
    ob_end_clean();
    return split("\\n", trim($str));
}

$locale = "pl_PL.UTF8";
$locales = list_system_locales();

if(in_array($locale, $locales)){
        echo "o tak!..";
}else{
        echo "niestety,nie !..";}
?>

Rezultat:

niestety,nie !..

5.No to jeszcze gmstrftime()

luty 05 2012

Jak widać,zastosowanie funkcji przewidzianych w php do wyświetlania daty w innych językach nie daje spodziewanych rezultatów. U mnie jej zobrazowanie jest niestabilne:odświeżam i mam datę po angielsku,znowu odświeżam i mam datę po polsku.

Poza tym (to ustawienienia serwera) serwer akceptuje w funkcji setlocale()LC_TIME ale LC_ALL już nie.

Oprócz tego łańcuchy (strings) w funkcji setlokale()muszą być rozpoznawalne przez system operacyjny komputera użytkownika. Microsoft podaje na stronach msdn zarówno 'country/Region Strings' (dla Polski 'pol' lub 'poland') na stronie msdn jak i 'Language Strings'( dla polskiego 'plk' lub 'polish') na stronie msdn

Oczywiście,można zmienić ustawienia na swoim komputerze,ale nie można oczekiwać, że zrobi to użytkownik. Czyli najlepiej jest użyć skryptu podanego niżej albo znaleźć lub zrobić podobny skrypt.

Data poprawnie po polsku. Autor: Adam Golański rok 2007

Artykuł pochodzi z: windowshosting.pl

Ponieważ standardowa funkcja date() w PHP nie da poprawnej w języku polskim daty,po to by zachować zgodną z polską gramatyką formę daty, należy zbudować tablice asocjacyjne:(zupełnie przy okazji,ustalimy termin Wielkanocy w 2010roku)

Oto rezultat:

Dziś mamy niedzielę, 05 lutego 2012 roku

Oto rezultat pytania o Wielkanoc w 2010 roku

Wielkanoc będzie w niedzielę, 04 kwietnia 2010 roku

A tak wygląda skrypt:

<?
$dzien = date('d');
$dzientygodnia = date('l');
$miesiac = date('n');
$rok = date('Y');

$miesiac_PL = array(1 => 'stycznia', 2 => 'lutego', 3 => 'marca', 
4 => 'kwietnia', 5 => 'maja', 6 => 'czerwca', 7 => 'lipca', 
8 => 'sierpnia', 9 => 'września', 10=> 'października', 
11 => 'listopada', 12 => 'grudnia');

$dzientygodnia_PL = array('Monday' => 'poniedziałek', 
'Tuesday' => 'wtorek', 'Wednesday' => 'środę', 
'Thursday' => 'czwartek', 'Friday' => 'piątek', 
'Saturday' => 'sobotę', 'Sunday' => 'niedzielę');

echo "Dziś mamy " . $dzientygodnia_PL[$dzientygodnia].", 

".$dzien." ".$miesiac_PL[$miesiac]." ".$rok."roku";
?>

Pytając o termin Wielkanocy w 2010 roku, dodaję do powyższego skryptu:

$dzien1=date("d",easter_date(2010));
       $dzientygodnia1=date("l",easter_date(2010));
       $miesiac1=date("n",easter_date(2010));
       $rok1=date("Y",easter_date(2010));
 echo "<div style='background-color:#FFFF00;width:430px;margin:5px'>Wielkanoc będzie w " 
 . $dzientygodnia_PL[$dzientygodnia1].", 
      ".$dzien1." ".$miesiac_PL[$miesiac1]." ".$rok1." roku </div >";
?>
Last Modified 06/6/2011 11:14