Data w języku polskim w PHP
Funkcja date() języka PHP, opisana w artykule Zarządzanie datą i czasem w PHP, wyświetla datę w języku angielskim (np. 18 March 2012), co więc zrobić, żeby wyświetlić datę w języku polskim?
Problem ten możemy rozwiązać na dwa sposoby. Określając lokalizację, lub tworząc tablicę z nazwami miesięcy.
Określamy lokalizację
Zaczniemy od zaprezentowania krótszego rozwiązania:
<?php setlocale(LC_ALL, ''); echo strftime("%A %e %B %Y", time()); ?>
Powyższy kod zwróci nam datę z polskimi nazwami miesięcy. Oczywiście, możemy pobrać również inne elementy daty, według tabelki z artykułu: Zarządzanie datą i czasem w PHP, podstawiając poszczególne litery do funkcji strftime() i poprzedzając je znakiem „%” .
Wadą takiego rozwiązania jest to, że nazwa miesiąca nie jest wyświetlana z uwzględnieniem zasad gramatycznych języka polskiego.
Aktualizacja: funkcja strftime() jest od PHP 8.1 oznaczona jako przestarzała (deprecated) i nie należy na niej polegać. We współczesnym PHP polskie nazwy dni i miesięcy uzyskasz klasą IntlDateFormatter (rozszerzenie intl) albo sposobem z tablicą opisanym poniżej.
Tworzymy tablicę
Drugim sposobem na wyświetlenie polskiej daty jest stworzenie tablicy, z nazwami miesięcy. Można to zrobić w ten sposób:
<?php $m = array('stycznia','lutego','marca','kwietnia','maja','czerwca','lipca','sierpnia','września','października','listopada','grudnia'); ?>
<?php echo date("j") . ' ' . $m[date("n") - 1] . ', ' . date('Y') . ' ' . date("H:i"); ?>
Powyższy kod zwróci nam wynik: 18 marca, 2012 11:18. Jak można zauważyć nazwa miesiąca w tym rozwiązaniu jest zgodna z zasadami gramatycznymi języka polskiego.