De PHP-functie date() is engelstalig van opzet. Dit betekent dat dag- en maandnamen in het Engels zijn. Nu is het niet netjes om op je Nederlandse site te melden dat het vandaag 4 january is, dus je zult hier wat voor moeten coderen, naast de date()-functie. Nu zijn wij lui als het mogelijk is en daarom geef ik hieronder een aangepaste functie a.d.h.v. waarvan je zo de Nederlandse versie van de datum kan krijgen. Je roept hem heel simpel aan via nlDate($parameters); waarbij $parameters dezelfde string is die je anders in de date() functie had gestopt.
function nlDate($parameters){
// AM of PM doen we niet aan
$parameters = str_replace("A", "", $parameters);
$parameters = str_replace("a", "", $parameters);
$datum = date($parameters);
// Vervang de maand, klein
$datum = str_replace("january", "januari", $datum);
$datum = str_replace("february", "februari", $datum);
$datum = str_replace("march", "maart", $datum);
$datum = str_replace("april", "april", $datum);
$datum = str_replace("may", "mei", $datum);
$datum = str_replace("june", "juni", $datum);
$datum = str_replace("july", "juli", $datum);
$datum = str_replace("august", "augustus", $datum);
$datum = str_replace("september", "september", $datum);
$datum = str_replace("october", "oktober", $datum);
$datum = str_replace("november", "november", $datum);
$datum = str_replace("december", "december", $datum);
// Vervang de maand, hoofdletters
$datum = str_replace("January", "Januari", $datum);
$datum = str_replace("February", "Februari", $datum);
$datum = str_replace("March", "Maart", $datum);
$datum = str_replace("April", "April", $datum);
$datum = str_replace("May", "Mei", $datum);
$datum = str_replace("June", "Juni", $datum);
$datum = str_replace("July", "Juli", $datum);
$datum = str_replace("August", "Augustus", $datum);
$datum = str_replace("September", "September", $datum);
$datum = str_replace("October", "Oktober", $datum);
$datum = str_replace("November", "November", $datum);
$datum = str_replace("December", "December", $datum);
// Vervang de maand, kort
$datum = str_replace("Jan", "Jan", $datum);
$datum = str_replace("Feb", "Feb", $datum);
$datum = str_replace("Mar", "Maa", $datum);
$datum = str_replace("Apr", "Apr", $datum);
$datum = str_replace("May", "Mei", $datum);
$datum = str_replace("Jun", "Jun", $datum);
$datum = str_replace("Jul", "Jul", $datum);
$datum = str_replace("Aug", "Aug", $datum);
$datum = str_replace("Sep", "Sep", $datum);
$datum = str_replace("Oct", "Ok", $datum);
$datum = str_replace("Nov", "Nov", $datum);
$datum = str_replace("Dec", "Dec", $datum);
// Vervang de dag, klein
$datum = str_replace("monday", "maandag", $datum);
$datum = str_replace("tuesday", "dinsdag", $datum);
$datum = str_replace("wednesday", "woensdag", $datum);
$datum = str_replace("thursday", "donderdag", $datum);
$datum = str_replace("friday", "vrijdag", $datum);
$datum = str_replace("saturday", "zaterdag", $datum);
$datum = str_replace("sunday", "zondag", $datum);
// Vervang de dag, hoofdletters
$datum = str_replace("Monday", "Maandag", $datum);
$datum = str_replace("Tuesday", "Dinsdag", $datum);
$datum = str_replace("Wednesday", "Woensdag", $datum);
$datum = str_replace("Thursday", "Donderdag", $datum);
$datum = str_replace("Friday", "Vrijdag", $datum);
$datum = str_replace("Saturday", "Zaterdag", $datum);
$datum = str_replace("Sunday", "Zondag", $datum);
// Vervang de verkorting van de dag, hoofdletters
$datum = str_replace("Mon", "Maa", $datum);
$datum = str_replace("Tue", "Din", $datum);
$datum = str_replace("Wed", "Woe", $datum);
$datum = str_replace("Thu", "Don", $datum);
$datum = str_replace("Fri", "Vri", $datum);
$datum = str_replace("Sat", "Zat", $datum);
$datum = str_replace("Sun", "Zon", $datum);
return $datum;
}
?>
PS Het is bekend dat een str_replace functie op een array sneller is, maar dat bedacht ik me pas na het typen. Dit mag je dus zelf aanpassen…. ;-)
Of je gebruikt gewoon ‘setlocale’…
http://nl3.php.net/manual/en/function.setlocale.php
Eerste voorbeeld laat al zien hoe.
Is nog sneller dan str_replace ;)
Ehm ja, jammer weer.
Maar toch weer wat geleerd (het is meer dat ik die manual niet altijd even goed doorlees en dan zelf maar iets in elkaar ga prutsen ;-)).
Hahaha, dat had IK je zelfs kunnen vertellen ;-)
Ben vroeger op Designhulp hier nog wel eens mee aan het stoeien geweeest. De testbestandjes staan nog steeds in mijn tryout-mapje: Engels en Nederlands.
Wel goed verhaal hoor ;-)
Ulco: Hahaha, dat had IK je zelfs kunnen vertellen ;-)Gelukkig ben ik verder een fijne jongen… Ik ga maar eens back to school (moest ik toch om wat dingen te kopiëren bij mijn moeder op school, maar deze uitspraak werkt nu twee kanten op…)
toch altijd fijn: 2 a4′tjes aan code typen en dan met 1 functie afgebrand worden :-) heerlijk…
hehe, nice :)
Afgezien dat dit alternatief niet nodig is, een vergelijkbare oplossing kan altijd voor iets anders gebruikt worden. Waarom heb je dit niet gedaan door middels van array’s met corresponderende keys? Dus bijvoorbeeld:
< ?php
$maanden = array("January" => “januari”, “February” => “februari”);
// etc…, en dan…
echo $maanden[date("F")];
?>
Of iets vergelijkbaars. Of heb je dit gedaan zodat je elk mogelijke datum in kan voeren, een soort vertaal functie dus? Ik vind het namelijk een behoorlijke grootte functie voor zoiets simpels ;)
Niels, zoals ik al zei:
PS Het is bekend dat een str_replace functie op een array sneller is, maar dat bedacht ik me pas na het typen. Dit mag je dus zelf aanpassen.... ;-)Oef, excuses, overheen gelezen :)
FYI, setlocale werkt helaas niet op iedere webserver heb ik gemerkt. Met dank aan dit artikel wat me weer wat tikwerk scheelt :)
Idd Ramon, bij Free BSD servers moet je er even de karakterset achter zetten: nl_NL.ISO_8859-1
mvg, Bas
Natuurlijk werkt het niet helemaal goed bij mij:
$datum = date( “d-F”, strtotime( $object->date_end ) );
dit werkt prima, maar met de functie:
$folderd = Nldate( “d-F”, strtotime( $object->date_end ) );
hiermee is 16 october, 18 oktober, waar ligt dit nu weer aan?