Datum convert Amerikaans/europees

Door Michael , 15 jaar geleden, 9.888x bekeken

Iedereen herkent het probleem dat er databases zijn waar gewerkt wordt met amerikaanse datums. Met dit scriptje kan je gemakkelijk de datums omzetten naar Amerikaans en terug naar Europees.

dus 2007-06-30 wordt 31-06-2007
en 31-06-2007 wordt 2007-06-31

Gesponsorde koppelingen

PHP script bestanden

  1. datum-convert-amerikaanseuropees

 

Er zijn 20 reacties op 'Datum convert amerikaanseuropees'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


15 jaar geleden
 
0 +1 -0 -1
Mooi script, het kan echter veel simpeler.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
date( "d-m-Y" , strtotime( $amerikaansedatum ) )
?>


Waarbij $amerikaansedatum de amerikaanse datum voorstelt. Zo krijg je als je bijvoorbeeld 2008-1-10 invoert: 10-1-2008.
PHP Newbie
PHP Newbie
15 jaar geleden
 
0 +1 -0 -1
Wanneer wil je dit gebruiken? Wanneer krijg je zo'n datum terug?

Wanneer het uit een database komt, gebruik je de database functies om de datum op te maken, wanneer het uit je php script komt gebruik je de functie date(), dus als je me dat nog even uit zou kunnen leggen?
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
Quote:
amerikaanse datums
En waar staan dan de Amerikaanse datums? Jij gebruikt de voorbeelden yyyy-mm-dd en dd-mm-yyyy, maar mm-dd-yyyy ontbreekt in het voorbeeld. Daarnaast zal dit ook niet gaan werken, 01-02-2008, is dat nu 1 februari of 2 januari 2008?

yyyy-mm-dd is een ISO-formaat, geen amerikaans formaat.

En verder, zie de functie date(), die kan veel beter met datums werken dan jouw scriptje. Het is helaas niet anders.
Nicoow Unknown
Nicoow Unknown
15 jaar geleden
 
0 +1 -0 -1
@php newbie,
Heb jij nooit mensen hun eigen geboortedatum in laten vullen, dan zo je dus hem om willen zetten naar het ISO formaat, omdat het, volgens mij, niet in je database word opgenomen, als je veld een DATE veld is.
PHP Newbie
PHP Newbie
15 jaar geleden
 
0 +1 -0 -1
Gaat prima. 3 selectboxen maken, streepjes ertussen, en hop, de database in.


15 jaar geleden
 
0 +1 -0 -1
Maar MySQL bijvoorbeeld, zal een dd-mm-yyyy datum automatisch converteren naar een yyyy-mm-dd datum. Je kan dit natuurlijk oplossen door er varchar van te maken, maar als je het als date wilt houden dan heb je echt zo'n script nodig. Of een iets kortere variant natuurlijk...
Raymond ---
Raymond ---
15 jaar geleden
 
0 +1 -0 -1
Daar komt nog bij dat "Amerikaans formaat" met / slashes is ipv - streepjes
Michael
michael
15 jaar geleden
 
0 +1 -0 -1
@PHP NEWBIE
Dit script is niet bedoelt voor 3 selectboxen voor het invullen van een datum,maar voor 1 selectbox. Dan heb je dit inderdaad niet nodig. Ik heb een calender popupje die de datums op de "nederlandse" manier in 1 string zet.

Ik wil dus naar de database een omgekeerde volgorde hebben en naar de view weer de normale volgorde. dus ik moet ze 2 keer switchen.

Probeer maar eens de maand te pakken van "2005-01-01" met date

date herkent volgens mij het verschil tussen 2005-01-01 en 01-01-2005 niet. Tenminste ik kreeg het niet snel voor elkaar dus ik heb snel dit script gemaakt.

@Raymond
En het verschil tussen / en - wordt er in het begin al uitgefilterd
Kees Schepers
kees Schepers
15 jaar geleden
 
0 +1 -0 -1
@martijs:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= 'SELECT DATE_FORMAT(someDate,"%d/%m/%Y") AS `someDate` FROM someTable';
?>


Problem solved.
Raymond ---
Raymond ---
15 jaar geleden
 
0 +1 -0 -1
Quote:
31-06-2007 wordt 2007-06-31

Zou eigenlijk moeten worden:
31-06-2007 wordt 2007/06/31
Dan geef je een output zoals de amerikanen het schrijven.


15 jaar geleden
 
0 +1 -0 -1
@kees: bedankt, weer wat geleerd:)
Edit:
In dat geval is een dergelijk script eigenlijk vrij nutteloos, tenzij je gebruikers amerikaanse data invoeren:P
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Kees: Slecht voorbeeld, ga maar eens sorteren... Verder nooit backtics gebruiken en de alias ALTIJD een andere neem geven dan het origineel. Het is tenslotte niet gelijk aan het origineel. Nu kun je ook weer sorteren.

Quote:
Probeer maar eens de maand te pakken van "2005-01-01" met date

SELECT MONTH('2005-01-01') AS maand;
Resultaat: 1. Dat werkt prima, een database heeft echt wel wat datumfuncties in huis. Dat is ook precies de reden dat je een datum als een datum opslaat en niet als een rottig stuk tekst waar je niks meer aan hebt. De reeds genoemde VARCHAR van Mathijs....

Hoe je een datum op een webpagina weergeeft of laat invullen, heeft 10x niks te maken met de manier waarop je deze opslaat in de database. Een datum is een datum en gebruik hiervoor altijd het ISO-formaat. Dit heeft geen moer te maken met de Yanks of gekke Britten, ISO = ISO.


15 jaar geleden
 
0 +1 -0 -1
//oftopic
Kom op jongens kan iemand me zeggen dat je niet mag zeggen datums?

Één datum, twee data!


15 jaar geleden
 
0 +1 -0 -1
//Ook offtopic
Kijk eens hier: http://www.vandale.nl/vandale/opzoeken/woordenboek/?zoekwoord=datum
Datum kan als data of als datums gebruikt worden in het meervoud. Het is dus gewoon goed nederlands;)
M Ypma
M Ypma
15 jaar geleden
 
0 +1 -0 -1
Quote:
dus 2007-06-30 wordt 31-06-2007
en 31-06-2007 wordt 2007-06-31

bij je eerste voorbeeld zijn we ineens een dag verder? 30 != 31
Michael
michael
15 jaar geleden
 
0 +1 -0 -1
@pgFrank. Ik doelde meer om 1 gehele string in europese format naar de database te sturen. Dus je hebt: '10-10-2008' in 1 string. Dus niet via mysql naar php.
Kees Schepers
kees Schepers
15 jaar geleden
 
0 +1 -0 -1
@pgFrank, wat betreft benaming geef ik je gelijk dan nog zou je kunnen sorteren door de tabel te specificeren in de order by zodat hij weet dat het niet om de alias gaat., en backtits als je backtits niet mocht gebruiken waarom zijn ze er dan ? Ik snap wel dat dit er in o.a. PostGreSQL niet is, maar het is in jouw geval een kwestie van smaak en dus niet relevant.
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Kees: Het is geen kwestie van smaak, maar een kwestie van risico's lopen of juist niet. Backtics zijn er om verboden woorden tóch als tabel- of kolomnaam te gebruiken, denk bv. aan `delete`. 1x de backtics vergeten en er kan van alles fout gaan.

In pgSQL kun je overigens soortgelijke dingen uitvreten...

Geen idee waarom dit soort gevaarlijke constructies zijn bedacht, het enige dat je er mee kunt, is de kans op bugs vergroten.

Gewoon niet gebruiken, je hebt nooit backtics nodig, verzin gewoon een betere naam met de volgende regeltjes:
- lower case a-z en eventueel een uderscore
- géén gereserveerde woorden
- alleen bij hoge uitzondering getallen in de namen opnemen
Lyseth
Lyseth
13 jaar geleden
 
0 +1 -0 -1
ik voer op mijn scherm 24-08-2009 in en wil dat omzetten naar Y-m-d formaat.
Ik gebruik daarvoor de hierboven gemelde
$resdatum = date( "Y-m-d" , strtotime( $_POST['datum']) );

Maar ik krijg als datum terug 1970-01-01.

Wat doe ik fout?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Eddy E
Eddy E
13 jaar geleden
 
0 +1 -0 -1
Raar.
Als ik dit script run:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo 'YYYY-MM-DD veranderen in ' . date("Y-m-d", strtotime('2009-12-31'));
echo '<br>';
echo 'DD-MM-YYYY veranderen in ' . date("d-m-Y", strtotime('31-12-2009'));
?>


Dan krijg ik als resultaat:
YYYY-MM-DD veranderen in 2009-12-31
DD-MM-YYYY veranderen in 31-12-2009


En over datums/data: data is beter, maar in dit vakgebied verwarrend met de data die je binnenkrijgt. Daarom kan je beter spreken van datums, als je het meervoud van datum bedoeld.
Ook Van Dale verwijst: Zie: data en niet 'datums'.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. datum-convert-amerikaanseuropees

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.