Datum

Status
Niet open voor verdere reacties.

bartbh

Gebruiker
Lid geworden
1 jun 2001
Berichten
543
Ik gebruik bij PHP de actie
$datum=date(d:m:Y)
En de datum sla ik dan op in m'n MySQL database. Maar daar word 23-5-2003 op geslagen als 2305-05-03 (of zoiets ik zit nu op school dus ik weet het zo niet precies)
Maar het probleem is, ik wil als ik de datum uit de MySQL datbase haal dat hij in de nederlandse datumnotatie komt te staan. Hij mag wel in de amerikaanse manier op geslagen worden maar hij moet er op de nederlandse manier "uitkomen"
 
Heb je het als een timestamp?

mysql_query("select DATE_FORMAT(kolom, '%d-%m-%Y') from tabel");

Aanpassen naar wens.
 
Als je een datum wilt genereren kun je dit het beste doen met time() (php-functie). time() accepteert geen argumenten en geeft de tijd weer in seconden sinds het UNIX tijdperk (01-01-1970 00:00:00). Sla je dit op in je sql database, dan kun je het er later weer uithalen met de functie strftime() i.c.m. set_locale(). Met de laatstgenoemde kun je de lokale instellingen wijzigen voor een bepaald land, bijvoorbeeld nederland. Denk aan dagnamen, maandnamen en datumnotatie. gebruik voor de nederlandse tijdsinstellingen set_locale(LC_TIME, "nl_NL"). Nadere uitleg is op php.net te vinden.
 
ook datum?

Krijg je bij set_locale(LC_TIME, "nl_NL") ook de datum goed te staan? Want de tijd is wel goed maar de datum niet.
 
Het is vooral bedoeld om dag- en maandnameen goed weer te geven. De volgorde moet je nog steeds zelf bepalen. Maar de afkortingen voor strftime() zijn anders dan die van date(). In de regel kun je zeggen dat elke afkorting bij strftime() begonnen moet worden met een %. Dus %d-%m-%Y resulteert in 25-05-2003. Er zijn uitzonderingen, want strftime heeft meer mogelijkheden dan de gewone date(). Maar ga hier eerst maar van uit.

En ja, LC_TIME staat voor alles wat met tijdsbepaling te maken heeft. Kijk ook hier:

www.php.net/strftime
www.php.net/time
www.php.net/set_locale
 
Als je iets in een tabel zet en je geeft geen timestamp in, dan wordt deze timestamp automatisch aangepast aan de tijd dat je de gegevens er in hebt gezet.

Deze kun je er weer uithalen als:
PHP:
$query = mysql_query("SELECT DATE_FORMAT(kolom, '%d-%m-%Y') AS datum"); 
// Selecteer het datum formaat uit de kolom 'kolom' als dag-maand-jaar en geef hem de waarde 'datum'
$output = mysql_fetch_assoc($query); // array maken 
print($output['datum']); // print de waarde 'datum'
 
lukt niet

Met deze code

PHP:
<?PHP
/* zet de locatie op nederlands */
    setlocale (LC_TIME, 'nl_NL');

    /* Output: datum van vandaag */
    echo strftime ("%A %d %B %Y");
?>

Krijg IK (op localhost) de Amerikaanse datering
Sunday 25 May 2003
inplaats van
zondag 25 mei 2003

Hoe kan dat?
 
Laatst bewerkt:
het kan natuurlijk gebeuren dat de server waar je dat op probeerd geen nederlandse instellingen heeft. Probeer het eens op een externe host als Lycos ofzo... Als ie het daar wel goed doet weet je dat het ligt aan je eigen configuratie
 
Dat weet ik niet precies, maar aan de hand van de php.net site, kun je wel een foutmelding weergeven als het instellen van een lokaal niet gelukt is:

Setlocale geeft de nieuwe huidige locale terug, of FALSE als de locale functionaliteit niet geimplementeerd is op het platform, de gespecifieerde locale niet bestaat of als de categorie naam incorrect is.

Doe dan eens dit:

PHP:
<?php

if(!setlocale(LC_TIME, "nl_NL"))
{
     echo "De taalmodule Nederlands is niet aanwezig";
}

?>

Een simpel controlescript dat kijkt of de taalmodule nl_NL wel aanwezig is. Zie je niets op het scherm? Dan is hij wel aanwezig.
 
anders

Kan ik het niet op een andere manier doen?
Dat hij de dag van de week aan geeft
en dat als dat 0 is dan is het zondag 1=maandag 2=dinsdag enz en het zelfde met de maand? de maand weet ik wel
PHP:
date('n')
dan heb ik het nummer van de maand. Maar hoe kan ik dan het nummer van de dag v/d week krijgen?

PHP:
<?php $maand_nummer = date('n'); if ($maand_nummer == 1){ echo "januari"; }elseif ($maand_nummer == 2){ echo "februari"; } // zelfde voor $maand_nummer 3 tot en met 10 }elseif ($maand_nummer == 11){ echo "november"; }else echo"december"?>
 
Laatst bewerkt:
Nee joh das veel te omslachtig! Het moet gewoon met strftime lukken. Draai mijn script nou maar eens, het is niet iets wat je iedere keer moet uitvoeren, je moet alleen weten of hij false of true teruggeeft tijdens het instellen van de locale.

btw: heb je toevallig engelse windows ofzo? of nl windows en engelse taal ingesteld?
 
De taalmodule Nederlands is niet aanwezig

De taalmodule Nederlands is niet aanwezig!

Ik heb nederlandse windows en ned taal enz. Btw ik gebruik PHPdev kwenie of dat wat uitmaakt maar toch.

Wat kan ik nu doen nu de nederlandse taal er niet op zit?
 
Nu ik het ook eens op mijn eigen localhost probeer: inderdaad, ik gebruik ook phpdev (4.2.3) en ik krijg ook niet aanwezig.

Ik heb het gepost op het forum van phpdev want ik ben daar ook wel nieuwsgierig naar :).
 
Bij mij staat het goed, maar controleer nog ff:

Start --> Conf. scherm --> Landinstellingen

Kijk of daar alles op Nederlands staat en of de datum notatie goed is. Bij mij nogmaals wel, alles staat zo nederlands als wat.
 
ja

Ja, alles staat in het nederlands ingesteld Dus, wachten op de reactie van PHPDev?
 
Iemand anders?

Heeft iemand nog iets anders? Misschien met de manier
PHP:
date('n')
en de andere manier om de dag nummers weer te geven.
 
Zoiets moet je niet doen, dat is gewoon veel te omslachtig. Ik zie dat er nog steeds geen antwoord op die topic is van het forum van phpdev zelf. Ik zal nu eens wat msn contactpersonen in schakelen, misschien weten zij er meer van.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan