Date & timestamp
Als resultaat slaat hij dit op:
2014-12-26 21:57:41
Nu wil ik dat laten zien als
26-12-2014
Ik wilde dit doen door:
date('d-m-Y', $variabel)
Maar krijug dan als resultaat 1970-01-01
Het lijkt erop dat de functie alleen voor unix-timestamp werkt.
Welke functie zou ik dan wel moeten gebruiken?
Ik heb ook het volgende geprobeert:
DateTime($prod['changedate'])->format('d-m-Y')
Maar krijg dan foutmelding:
Fatal error: Call to undefined function DateTime()
Als ik dit gebruik:
date_format($prod['changedate'], 'd-m-Y')
krijg ik:
Warning: date_format() expects parameter 1 to be DateTime,
Gewijzigd op 26/12/2014 22:33:16 door J C
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$date = new datetime($row['datumuitdatabase']);
echo $date->format('d-m-Y');
?>
$date = new datetime($row['datumuitdatabase']);
echo $date->format('d-m-Y');
?>
De functie strtotime() is best krachtig, hij maakt van bijna elk fatsoenlijk tijdsformaat een timestamp.
Dus 2014-12-27 zal hij ook omzetten, maar 27 december 2014 ook.
Wil je die elders weer opnieuw gebruiken, dan zit je precies aan die datumschrijfwijze vast.
En het kan zijn dat je in een jaaroverzicht het jaartal niet noemt, of in een maand overzicht de maand.
En voor een Duitser wil je 27. Dez schrijven en voor een Engelstalige 12/27/2014.
Zou je dan steeds een nieuwe query kosten, of je moet elke query weer dynamisch gaan samenstellen met de juiste %-string, met alle risico's van dien.
Toevoeging op 27/12/2014 13:04:31:
en ook trouwens als op de ene plek de datum en op een andere plek het tijdstip wilt noemen.
Bijvoorbeeld voor datum:
Bijvoorbeeld voor datum en tijd:
Code (php)
1
SELECT DATE_FORMAT(date, '%d-%m-%Y') AS dateFormat, DATE_FORMAT(date, '%H-%i') AS timeFormat FROM ...
Voor meertaligheid zou je bijvoorbeeld dit kunnen doen:
Code (php)
Bovenstaande vind je risicovol? dat is toch het zelfde als werken met de PHP date functie? Gewoon zorgen dat je $format goed opbouwt. Als je het nou format verkeerd opbouwt via SQL of PHP beide keren gaat hij op zijn plaat.
En mocht je op een later moment toch een ander formaat wilt gebruiken kun je dat vooraf al in de query doen via een apparte var aan te maken of later alsnog via PHP date functie te formarteren.
Dan krijg je dus dat er array's gebruikt gaan worden om de namen van de maanden te vertalen.
Krijg je allemaal nog wel verwerkt in zo'n switch hoor.
Maar over een half jaar valt de site om, omdat de beheerder een typfout maakt als hij het ook nog in het Frans wil vertalen.
Of omdat hij op een andere manier ergens gewoon de string met %-tekens verknoeit.
Hardcoded lukt zoiets wel. Dat klopt.
Maar ik heb zelf liever dat dingen in PHP fout gaan, dan in een query. Een mislukte query levert gewoon geen resultaat op, terwijl in PHP iets handiger is af te vangen.
----
Het voor beeld van de datum en de tijd in die 2 query's, is wat ik bedoel met "doe het nu maar in je script."
Want jij hebt nu een 2e variant gebruikt omdat je bedenkt dat je tijd ook nodig hebt.
Maar in je volgende script blijkt ook het aantal seconden nodig.
En heb je de onderdelen van de datum in 3 elementen nodig voor een date-picker die bestaat uit 3 pulldowns.....
Daarom selecteer ik gewoon de datum-kolom (liefst niet "date" geheten) en pak ik met format() eruit wat ik nodig heb.
Kan ik er bovendien ook eenvoudig mee rekenen, zou ik bijvoorbeeld nodig hebben of iets ouder is dan x dagen.
(ja ook dat kan in een query, maar ik heb het liefst universeel bruikbare query's en niet een query voor elke situatie.
Als je namelijk een kolom toevoegt, mag je alle plekken met een query af om die kolom toe te voegen
Het is maar een tijdelijke website en voor mij op dit moment de makkelijkste oplossing.