Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

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.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, ,

Dodaj komentarz

Odpowiedz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest