PHP de juiste manier: Nederlandse datums

Het vertalen van datums binnen PHP kan lastig zijn. Het probleem is dat de DateTime class en date() functie geen ondersteuning bieden voor meertaligheid. Hierdoor moet er gebruik worden gemaakt van alternatieve functies binnen PHP om de datum te kunnen vertalen naar het Nederland. In deze post laat ik drie methodes zien om datums te vertalen naar het Nederlands.

Vertalen met een array

Om af te trappen beginnen we met een de meeste simpele manier. Met het vervangen van de Engelse teksten naar het Nederland door middel van een array.

$months = [
    'January' => 'januari',
    'February' => 'februari',
    'March' => 'maart',
    'April' => 'april',
    'May' => 'mei',
    'June' => 'juni',
    'July' => 'juli',
    'August' => 'augustus',
    'September' => 'september',
    'October' => 'oktober',
    'November' => 'november',
    'December' => 'december'
];

$weekdays = [
    'Monday' => 'maandag',
    'Tuesday' => 'dinsdag',
    'Wednesday' => 'woensdag',
    'Thursday' => 'donderdag',
    'Friday' => 'vrijdag',
    'Saturday' => 'zaterdag',
    'Sunday' => 'zondag'
];
// Sunday 9 April 2017 17:40:09
$datetime = date('l j F Y H:i:s');
$datetime = str_replace(array_keys($months),   array_values($months),   $datetime);
$datetime = str_replace(array_keys($weekdays), array_values($weekdays), $datetime);
// zondag 9 april 2017 17:40:09
echo $datetime;

Vertalen met strftime() – DEPRECATED

De strftime() functie sinds PHP 8.1 aangemerkt als verouderd. Deze functie zal in de toekomst dan ook worden verwijderd. Het is onverstandig om deze functie vandaag de dag nog te gebruiken. Een alternatief is dan ook om gebruik te maken van IntlDateFormatter::format.

Met strftime was het mogelijk om datums te vertalen in elke gewenste taal.

setlocale(LC_ALL, "nl_NL");
// zondag 9 april 2017 17:40:09
echo strftime("%A %e %B %Y %T");

Datums vertalen met IntlDateFormatter()

Tot slot een alternatieve manier voor het vertalen van datums naar het Nederlands. In tegenstelling tot bovenstaande functie is het met IntlDateFormatter mogelijk om gebruik te maken van de DateTime class.

$fmt = new IntlDateFormatter(
    locale: "nl_NL",
    dateType: IntlDateFormatter::LONG,
    timeType: IntlDateFormatter::MEDIUM,
    timezone: 'Europe/Amsterdam',
    calendar: IntlDateFormatter::GREGORIAN
);

// zondag 9 april 2017 17:40:09
echo $fmt->format(new DateTime);

Mocht je meer PHP tips willen lezen dan heb ik een kleine verzameling van verschillende tips voor jullie. Klik op de onderstaande knop om deze te bekijken:

Vond je dit een leuk blog artikel dan is een reactie altijd welkom: Klik hier om een reactie achter te laten.

Abonneer je op dit blog d.m.v. e-mail

Meld je hieronder aan met jouw e-mailadres en ontvang als eerste een mailtje wanneer er een nieuw artikel online gaat op mijn blog.

Voeg je bij 9 andere abonnees

Dit vind je misschien ook leuk