
Ciekawe i istotne rozwiązania dla stron www
1.Używam funkcji strftime():
<?php
echo strftime("%A, %d %B %Y");
?>
Rezultat:
Sunday, 05 February 20122.Używam funkcji setlocale():
<?php
setlocale(LC_TIME, "poland");
echo strftime("%A, %d %B %Y");
?>
Rezultat:
Sunday, 05 February 20123.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., Sunday4.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 2012Jak 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.
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:
Oto rezultat pytania o Wielkanoc w 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 >";
?>