Door
- DHU -
op 22-11-2018 19:36
gewijzigd op 22-11-2018 19:50
4.787 views
Hoi allemaal,
jullie zul vast denken daar heb je 'm weer maar ik loop compleet vast in de datumnotatie naar het Nederlands.
Ik kan maar geen gedegen uitleg vinden hoe ik datum uit een datumveld van de datum kan trekken en die in het NL formaat met de dagnaam ervoor. Dus een datum 2018-11-22 zoals die in database wordt opgeslagen wil op laten tonen als "donderdag 22 november 2018"... als ik ga googlen dan krijg ik zo'n beetje de hele wereld over me heen met welbedoelde adviezen maar de 1 zegt de datefunctie de ander zegt de strftime. De setlocale vliegen om me horen. Weer een ander brult dit moet je zo doen en absoluut niet zo doen...
Hey guys, ik ben nog maar een beginneling en je zal begrijpen dat dit er niet gemakkelijker op maakt.. maar gelukkig is phphulp :-)
Al met al.. ik kom er vooralsnog niet uit. Heeft iemand een werkende oplossing of weet misschien een leesbare tekst die hierover gaat.. Php.net is ook niet de gemakkelijkste site om te lezen..
Ik heb voorbeelden gegeven, het overzicht op de benoemde sites is naar mijn idee best duidelijk met voorbeelden. Ik weet anders ook niet waar de bottleneck zit. Ook ik ben overigens als beginner op php.net binnengekomen om PHP te leren en als je de Engelse taal kent, is het geen probleem.
Ik zou zeggen: Download eens wat stukjes code en probeer deze te doorgronden.
Kan zelfs even snel in een sandbox.
Evengoed had ik je graag willen helpen, maar dat schiet niet op met een "Laat maar zitten".
Misschien is het eventjes voor nu te veel en moet je het laten bezinken tot morgen? Wie weet is het dan duidelijker ;-)
Als iets niet lukt, kom dan graag met voorbeelden aan, we weten immers niet wat je geprobeerd hebt.
het is misschien iets te veel van het goede... maar duidelijks als aangegeven kan ik niet ... ik heb een databaseveld met een bepaalde notatie die ik op de nl manier wil weergeven... wat ik geprobeerd heb is zo'n beetje te veel om hier te gaan beshrijven want dan ben ik een week bezig denk ik...
het lukt me gewoonweg niet om de datum in NL weer te geven... Nou dan maar in de standaard jjjj-mm-dd weergaven...
brand is erger.
Te doorgronden is het moeilijk als er meer dan 1001 google resulaten iets anders laat zien en de een de andere de grond inboord.. daar wordt het niet duidelijker op..
Die codes die je hebt aangedragen heb ik uitgelegd dat ze niet toereikend waren waarom ik denk dat het zo is...
Format the time and/or date according to locale settings. Month and weekday names and other language-dependent strings respect the current locale set with [php]setlocale[/php].
Het is niet zozeer lastiger, de locales heten wel anders. Voor Nederlands is de locale 'nld_nld' beschikbaar.
Wat je dus kunt doen als je beide wilt ondersteunen is:
<?php
setlocale(LC_ALL, 'nl_NL', 'nld_nld');
?>
Deze locale namen werken hetzelfde binnen MySQL. Daar zul je alleen moeten kijken wat het platform is; de database draait immers niet gegarandeerd op dezelfde server als PHP.
zoals ik al zei.. laat maar zitten. Je snapt het inderdaad niet..
dat gedoe rond die set locale zal wel snor zitten en dat geloof ik allemaal wel..
maar de php echo code om de waarde uit het datumveld van de database te trekken heb ik niet veel aan de set locale.
we hebben hier nu al veel verkeer over... kan me beter om andere zaken focussen.. dit zal ooit tzt wel een keer opgelost worden...
maar waarom je nu de titel hebt aangepast 'Knettergek, maar dan ook knettergestoord word ik van de date in php' naar 'Gebruiken van datum in PHP'' , is me niet duidelijk.. want het is toch ook om knetter vna te worden..
Hoe je iets opslaat en hoe je iets weergeeft zijn twee verschillende dingen.
Je kunt een datum formatteren zoals je wilt voordat je deze weergeeft op het scherm, en het is een goede zaak dat deze als YYYY-MM-DD formaat in je database zit, omdat je er op die manier mee kunt rekenen en sorteren, dat wordt een stuk lastiger als deze op een voorgekookte manier is geformatteerd, dan wordt filteren en sorteren een stuk moeilijker zo niet onmogelijk.
Daarom zou ook eigenlijk mijn voorkeur uitgaan naar een oplossing dichter bij de "presentatie(laag)" oftewel in PHP. Een functie zou misschien aan te bevelen zijn, o.a. omdat je dan de formattering op één plek regelt. Je kunt deze dan een datum uit je database voeren (in YYYY-MM-DD formaat) en deze functie spuugt vervolgens iets uit in het format zoals jij dit wilt.
Als je in al dat gezever met setlocale geen zin hebt kun je zoiets doen:
Maar met een werkende locale (wat uiteraard beter is) kan het wat korter:
<?php
$date = '2018-11-22';
function myDateLocale($in) {
$d = new DateTime($in);
return $d->format('l j F Y'); // donderdag 22 november 2018
}
echo myDateLocale($date);
?>
Verder weet ik niet helemaal wat je verwacht van dit forum (of van hulp op het internet in het algemeen). Enige eigen inspanning lijkt mij hier wel van toepassing. We snappen dat niet iedereen even tech savvy is, maar dan moet je je ook afvragen of je gelukkig wordt van het verdiepen in een programmeertaal als je weinig affiniteit met programmeren hebt. Wellicht is het dan handiger dat je een vacature plaatst of een stagiair(e) werft.
Je wilt de datum in het Nederlands tonen, en die oplossing reik ik ook toe.
Verder heb ik ook al uitgelegd dat je in geval van een database DATE_FORMAT() moet gebruiken, en hoe je dat moet gebruiken. En dat je na je connectie ook de genoemde SET-query moet draaien.
De topictitel heb ik aangepast omdat dit niet je probleem omschrijft. Anderen moeten aan je topictitel eenvoudig kunnen zien wat je probleem is. Dat je er knettergek van wordt doet anderen er niet toe. Dat kan je wel in je bericht laten weten.
Ik zou zeggen: Laat het even bezinken, en kijk morgen of eerdaags eens verder. Ik kan me indenken dat je na uren turen er niks meer van snapt. Dus neem even rust en grote kans dat het morgen beter gaat.
Dus een datum 2018-11-22 zoals die in database wordt opgeslagen wil op laten tonen als "donderdag 22 november 2018"
Gewoon uit de database trekken op dezelfde manier als alle andere data en dan, voordat je deze weergeeft, door een formatteringsfunctie halen zoals in de reacties hierboven staat uitgelegd.