20" iMac; 2.4ghz Core 2 Duo; 3GB; Ati Radeon 2600HD Pro
Icons are overrated
1
2
3
4
5
6
7
8
9
| function change_datetime($str) { list($date, $time) = explode(' ', $str); list($year, $month, $day) = explode('-', $date); list($hour, $minute, $second) = explode(':', $time); $timestamp = $day."-".$month."-".$year." at ".$hour.":".$minute; return $timestamp; } |
Echter kwam ik er een half jaar geleden achter dat het inderdaad ook met php zelf kan. Echter heb ik dit nooit geprobeerd, misschien dat je wat met de code hierboven kan? Misschien zelf een array met maanden toevoegen?
Edit
bijvoorbeeld:
1
2
3
| $maanden[1] = jan; $maanden[2] = feb; enz. |
en dan het volgende doen
1
| $timestamp = $day."-".$maanden[$month]."-".$year." at ".$hour.":".$minute; |
Heb het zelf nog niet getest;)
[ Voor 17% gewijzigd door nickb90 op 17-01-2010 12:30 ]
Verwijderd
Je kan ook de DATE_FORMAT functie uit MySQL gebruiken. Dan kan je de datum al in het formaat "17 januari 2010" ophalen.
Standaard zal de naam van de maand dan in het engels zijn, maar met de juiste locale settings kan MySQL ook netjes de nederlandse maand voor je invullen.
http://dev.mysql.com/doc/refman/5.0/en/locale-support.html
1
| $strDatum = date("d-m-Y", strtotime($strDatumUitMySQL)); |
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"
1
2
| $datum = $seminar['datum']; $datumFormat = strftime("%e %B %Y",strtotime($datum)); |
en ook dit toe te voegen:
1
| setlocale(LC_TIME, 'NL_nl'); |
Bedankt iig voor de hulp!
Edit: wat soortgelijk is aan de oplossing van Priet
[ Voor 16% gewijzigd door bekok op 17-01-2010 13:08 ]
20" iMac; 2.4ghz Core 2 Duo; 3GB; Ati Radeon 2600HD Pro
Ehm, nee. Dat moet je helemaal niet willen. Als je het uit de database haalt als 2010-01-17 en vervolgens met strtotime naar een timestamp omzet, dan kun je alles met die datum wat je maar wil, inclusief rekenen of hersorteren mocht je dat later nog een keer nodig vinden. Wanneer je "17 januari 2010" ophaalt als string en vervolgens meteen afdrukt heb je nergens een waarde van enige betekenis waar je eventueel nog bewerkingen op kan doen.Verwijderd schreef op zondag 17 januari 2010 @ 12:29:
Volgens mij heb je helemaal geen php functie nodig!
Je kan ook de DATE_FORMAT functie uit MySQL gebruiken. Dan kan je de datum al in het formaat "17 januari 2010" ophalen.
Databases zijn voor data-opslag, niet voor presentatie. Je doet toch ook niet dit?
1
| SELECT CONCAT(CONCAT('<a href="/nieuws.php?id=', NewsId), '">Lees verder...</a>') FROM News |
...alleen omdat je een nieuwslinkje nodig hebt in die vorm? Dat doe je toch ook in je businesscode?
Overigens is strftime in PHP5 en lager niet helemaal thread safe op Windows-servers. Op het moment dat je setlocale gebruikt om de taal op Nederlands te zetten en intussen iemand anders een thread start op dezelfde server die een andere taal set of zelfs geen expliciete taal gebruikt (default is waarschijnlijk Engels) dan zal vanaf dat moment tijdens het runnen van je script elke verdere aanroep van strftime uitgaan van de "nieuwe" locale in het andere script dat gerund wordt. Voor weergave op een website die bij de volgende refresh weer goed komt maakt dat niet zoveel uit, maar ik kwam erachter bij het aanmaken van facturen, en daar staat het dan weer een stuk lulliger.
1
2
3
4
5
6
7
8
9
| function DutchStrftime($format, $timestamp = null) { $months = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'); if (is_null($timestamp)) $timestamp = time(); $format = str_replace('%B', date('m', $timestamp), $format); return strftime($format, $timestamp); } |
[ Voor 34% gewijzigd door NMe op 17-01-2010 13:19 ]
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Verwijderd
Dat is ook een manier om het te bekijken.NMe schreef op zondag 17 januari 2010 @ 13:09:
[...]
Ehm, nee. Dat moet je helemaal niet willen. Als je het uit de database haalt als 2010-01-17 en vervolgens met strtotime naar een timestamp omzet, dan kun je alles met die datum wat je maar wil, inclusief rekenen of hersorteren mocht je dat later nog een keer nodig vinden. Wanneer je "17 januari 2010" ophaalt als string en vervolgens meteen afdrukt heb je nergens een waarde van enige betekenis waar je eventueel nog bewerkingen op kan doen.
Je voorbeeld over het nieuwslinkje daar ben ik het helemaal mee eens hoor, maar ik vind dat persoonlijk toch een iets andere case.
Als je een date kolom hebt in MySQL en je datum in unix-timestamp formaat wil hebben, dan kan je bij het selecteren natuurlijk ook gewoon de UNIX_TIMESTAMP functie gebruiken. In plaats van eerst een string op te halen en dan strtotime aan te roepen.
Ook waar natuurlijk.Verwijderd schreef op zondag 17 januari 2010 @ 13:31:
[...]
Als je een date kolom hebt in MySQL en je datum in unix-timestamp formaat wil hebben, dan kan je bij het selecteren natuurlijk ook gewoon de UNIX_TIMESTAMP functie gebruiken. In plaats van eerst een string op te halen en dan strtotime aan te roepen.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.