Toon posts:

[PHP/MySQL] Nederlandse datumweergave

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zet in een MySQL-tabel de huidige datum (een timestamp) door er default now() in te plaatsten (in MySQL).
Als ik de datum uitlees en format naar bijv. vr 04 okt 2002, wordt het weergeven in de Engelstalige notatie. Ik heb setlocale (LC_ALL, 'nl_NL'); al gezet. Maar nog steeds wordt de datum Engelstalig weergegeven.
Hoe kan dit?? 8)7
Moet ik in MySQL ook nog de taal zetten?? En zo ja, hoe doe ik dat dan??

groetjes
Paul

  • WarPuppy
  • Registratie: Januari 2000
  • Laatst online: 23-08 21:39

WarPuppy

Electronic Technology

Ej, al eens gezocht ? (klinkt lame, mar het is echt te vinden, zoek maar eens op datumnotatie)

Verwijderd

kijk eens op PHPfreakz.com daar zal je vast wel wak kunnen vinden wat je bevalt :)

Verwijderd

Tja, als je server de nl_nl locale niet ondersteund kom je er natuurlijk niet he?

Je kunt natuurlijk zelf een array maken met je nederlandse dagen en maanden erin en dan via een switch statement met date en een timestamp aan de gang gaan. Zo moeilijk is dat helemaal niet.

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 08-08 17:31
je zou natuurlijk als nl_nl niet wordt ondersteund een functie kunnen schrijven die zelf de naam van de dag en maand wegschrijft. Zoiets als:

function welkemaand($maand) {
switch ($maand) {
case("01"): $maand_tekst = "januari";
case("02"): $maand_tekst = "februari";
}
return $maand_tekst;
}

ofzoiets

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

wustenveld:
je zou natuurlijk als nl_nl niet wordt ondersteund een functie kunnen schrijven die zelf de naam van de dag en maand wegschrijft. Zoiets als:

function welkemaand($maand) {
switch ($maand) {
case("01"): $maand_tekst = "januari";
case("02"): $maand_tekst = "februari";
}
return $maand_tekst;
}

ofzoiets
Overdrijven is ook een vak.

Mocht 't nou echt niet lukken met taal-instellingen, kun je het beter zo doen:
code:
1
2
3
4
5
6
7
8
9
10
$Montnames = array ( 
   'nl' => array (
      '', 'januari', 'februari', 'maart' /* ... */ 
   ),
   'en' => array (
      '', 'Januari', 'Februari', 'March' /* ... */
   )
);
// ...
$month = $Monthnames [ $lang ] [ $monthNr ];


Ga er iig geen functie voor schrijven, da's nergens goed voor.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 13:51
drm schreef op 04 oktober 2002 @ 16:51:

Ga er iig geen functie voor schrijven, da's nergens goed voor.
Tis maar net wat jezelf handiger vindt natuurlijk.

Verwijderd

Je kan het eenvoudig oplossen met DATE_FORMAT.

Even zoeken in de mysql manual

Als je bedoeld de woorden maandag etc dan heb je hier niets aan.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Sybr_E-N:
Tis maar net wat jezelf handiger vindt natuurlijk.
lijkt mij niet. Constanten terug laten geven door een functie is gewoon onzin.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 08-08 17:31
Mag ik vragen waarom het onzin is drm. Voor de meeste dingen die ik vaak tegenkom (zoals gedoe met data enzo) schrijf ik functies die ik weer in elke applicatie in kan zetten. Persoonlijk vind ik het handig om welkemaand($maand) te gebruiken tijdens het programmeren.

Zitten er voordelen aan het niet gebruiken van een functie ?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Simpelweg om het feit dat 't constanten zijn. Functies schrijf/gebruik je om een mutatie o.i.d. op een variabele te doen. Maar dat doe je niet, je geeft alleen maar aan de hand van een parameter een vaste (constante) waarde terug.

Verder is zo'n functie allesbehalve flexibel. Wat als je bijvoorbeeld alle maanden van het jaar wilt hebben om mee te werken? Maak je dan een for-loopje die van 1 tot 12 loopt? Dat is toch gewoon overdone...

Kortom, wat is het voordeel van
code:
1
$maand = welkemaand ( 1 )

boven
code:
1
$maand = welkemaand [ 1 ]

:?

Ik weet ik niet of ik dit kan zeggen, maar 't zou me niet verbazen als een array nog sneller is ook. Niet dat dat boeit een dergelijke functie maar als je voor elk wissewasje een functie gaat schrijven terwijl 't constanten betreft....

als laatste is het niet gewoonlijk, en zal je code er dus ook minder leesbaar op worden (imho)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 08-08 17:31
oké, cool weer wat geleerd :) en je hebt helemaal gelijk. Een functie is inderdaad handiger als je meer wilt dan alleen een waarde krijgen. Maar goed, ik ga nu naar muh huis toe, ik zie maandag wel weer verder. De groeten,

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Mysql kent bij mijn weten geen locale-support en zal alles dus ook in engelse tijden doen.
Dus zaken als date_format etc gaan niet werken, wat overblijft is dus de php-functie.

wustenveld: wat let je de array in een functie te verpakken ? ;)

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

in je query:
code:
1
SELECT *, UNIX_TIMESTAMP(timestamp_veld) AS datum FROM tabel


dat maakt van je mysql timestamp een unix timestamp en maakt het beschikbaar als datum.

dan in je php-code:

PHP:
1
2
setlocale(LC_TIME, "NL_nl")'
$datumstring = strftime("%d-%m-%Y", $array["datum"]);


kijk maar even in de manual bij strftime() welke tags je allemaal kan gebruiken...
Pagina: 1