Datum is MySql en PHP werken fundamenteel anders :
In MySql wordt een datum altijd opgeslagen als :
yyymmddhhiiss = TIMESTAMP
yyymmdd = DATE
hhiiss = TIME
Waarom wordt dit gedaan, misschien omdat dit makkelijker te lezen is dan x senconden na 1 januari 1970.
PHP slaat datums op als secondens na 1 januari 1970 in een ik mag hopen in een unsigned long. Het gebruik van MySql en PHP datum door elkaar kan dus voor problemen zorgen. Je moet er dus voor zorgen dat je je MySql Date ombouwt naar een PHP date en visa versa.
De volgende functie bouwt en MySql Timestamp om naar een PHP date
PHP:
1
| <?function mysqlDateToPhpDate($mysqTimestamp){ $date = Array(); $date['year'] = substr ($mysqTimestamp,0,4); $date['month'] = substr ($mysqTimestamp,4,2); $date['day'] = substr ($mysqTimestamp,6,2); $date['hour'] = substr ($mysqTimestamp,8,2); $date['minute'] = substr ($mysqTimestamp,10,2); $date['second'] = substr ($mysqTimestamp,12,2); $timestamp = mktime ($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year'] ); return($timestamp);}?> |
Dit werkt voor MySql Timestamp en Date (als je er 000000 achter plakt) Tevens kun je met deze functie controleren of je een goede timestamp het gebruikt.
Voor het ombouwen van een PHP Date naar een mysql Timestamp gebruik je :
PHP:
1
| <?$dateStr = date ("Ymdhis",$phpDate);?> |
Dus was doe je :
Je haalt de Date uit de database maakt er een PHP date van met de functie en haalt hem door date($format,$phpDate)
Date accepteerde o.a. de volgende formats :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| /**
* a - "am" of "pm"
* A - "AM" of "PM"
* B - Swatch Internet time
* d - dag van de maand, 2 cijfers met nullen aan het begin; dus "01" tot "31"
* D - dag van de week, textueel, 3 letters; dus "Fri"
* F - maand, textueel, lang; dus "January"
* g - uur, 12-uur format zonder nullen aan het begin; dus "1" tot "12"
* G - hour, 24-uur format zonder nullen aan het begin; dus "0" tot "23"
* h - uur, 12-uur format; dus "01" to "12"
* H - hour, 24-uur format; dus "00" tot "23"
* i - minuten; dus "00" tot "59"
* I (hoofdletter i) - "1" wanneer Daylight Savings Time, anders "0".
* j - dag van de maand zonder nullen aan het begin; dus "1" tot "31"
* l (kleine letter 'L') - dag van de week, textueel, lang; dus "Friday"
* L - boolean voor wanneer het een schrikkeljaar is; dus "0" of "1"
* m - maand; dus "01" tot "12"
* M - maand, textueel, 3 letters; dus "Jan"
* n - maand zonder nul aan het begin; dus "1" tot "12"
* r - RFC 822 geformatteerde date; dus "Thu, 21 Dec 2000 16:01:07 +0200"
* s - seconden; dus "00" tot "59"
* S - Engels ordinale suffix, textueel, 2 karakters; dus "th", "nd"
* t - aantal dagen in een gegeven maand; dus "28" tot "31"
* T - Timezone setting van deze machine; dus "MDT"
* U - seconden sinds epoch
* w - dag van de week, numeriek, dus "0" (Zondag) tot "6" (Zaterdag)
* Y - jaar, 4 cijfers; dus "1999"
* y - jaar, 2 cijfers; dus "99"
* z - dag van het jaar; dus "0" tot "365"
* Z - timezone offset in seconden (dus "-43200" tot "43200"). De offset voor timezones ten westen van UTC is altijd negatief, en voor het oosten van UTC altijd positief.
*/ |
Meer info op
http://www.php.net zoeken op date