login  Naam:   Wachtwoord: 
Registreer je!
 Forum

date_format

Offline Ultimatum - 09/11/2006 15:54 (laatste wijziging 09/11/2006 15:55)
Avatar van UltimatumPHP expert Ik heb een probleem met date_format(), het werkt goed maar ik krijg nu als uitkomst dit: 09-11-2006 14:11 maar wil 09-november-2006 14:11, alleen als ik het zo doe:

  1. <?php
  2. function datum($date)
  3. {
  4. $maanden = array();
  5. $maanden['01'] = 'januari';
  6. $maanden['02'] = 'februari';
  7. $maanden['03'] = 'maart';
  8. $maanden['04'] = 'april';
  9. $maanden['05'] = 'mei';
  10. $maanden['06'] = 'juni';
  11. $maanden['07'] = 'juli';
  12. $maanden['08'] = 'augustus';
  13. $maanden['09'] = 'september';
  14. $maanden['10'] = 'oktober';
  15. $maanden['11'] = 'november';
  16. $maanden['12'] = 'december';
  17.  
  18. list($datum, $tijd) = explode(' ', $date);
  19. list($jaar, $maand, $dag) = explode('-', $datum);
  20. list($uren, $minuten, $seconden) = explode(':', $tijd);
  21.  
  22. return date('d-m-Y H:i', mktime($uren, $minuten, $seconden, $maand, $dag, $jaar));
  23. }
  24. ?>


krijg ik de volgende error:
Citaat:
Warning: mktime() expects parameter 1 to be long, string given in D:programsxampphtdocsBlerck.nlv2incfunctions.php on line 161
01-01-1970 01:00


ik snap niet hoe ik dat weg krijg 

11 antwoorden

Gesponsorde links
Offline compudoc - 09/11/2006 16:08
Avatar van compudoc PHP beginner ik weet het niet zeker maar ik zie dat je als array maanden hebt
en bij mktime(xxxx,$maand,xxxx gebruikt ipv net als in de array $maanden

misschien is het wat, ik weet niet
Offline MindPrison - 09/11/2006 16:14 (laatste wijziging 09/11/2006 16:15)
Avatar van MindPrison PHP gevorderde
Citaat:
expects parameter 1 to be long
Dit betekend dat je een long (= getal) moet opgeven, maar jij geeft een string.

Je kan dit zo oplossen:

  1. <?php
  2. function datum($date)
  3. {
  4. $maanden = array();
  5. $maanden['01'] = 'januari';
  6. $maanden['02'] = 'februari';
  7. $maanden['03'] = 'maart';
  8. $maanden['04'] = 'april';
  9. $maanden['05'] = 'mei';
  10. $maanden['06'] = 'juni';
  11. $maanden['07'] = 'juli';
  12. $maanden['08'] = 'augustus';
  13. $maanden['09'] = 'september';
  14. $maanden['10'] = 'oktober';
  15. $maanden['11'] = 'november';
  16. $maanden['12'] = 'december';
  17.  
  18. list($datum, $tijd) = explode(' ', $date);
  19. list($jaar, $maand, $dag) = explode('-', $datum);
  20. list($uren, $minuten, $seconden) = explode(':', $tijd);
  21.  
  22. return date('d-m-Y H:i', mktime(intval($uren), intval($minuten), intval($seconden), intval($maand), intval($dag), intval($jaar)));
  23. }
  24. ?>
Offline Ultimatum - 09/11/2006 16:43 (laatste wijziging 09/11/2006 16:57)
Avatar van Ultimatum PHP expert Maar zo krijg ik ngo steeds niet de maanden en de datum is nu helemaal niet meer goed...
heb het al opgelost, door de explodes een beetje aan te passen 

  1. <?php
  2. function datum($date)
  3. {
  4. $maanden = array();
  5. $maanden['01'] = 'januari';
  6. $maanden['02'] = 'februari';
  7. $maanden['03'] = 'maart';
  8. $maanden['04'] = 'april';
  9. $maanden['05'] = 'mei';
  10. $maanden['06'] = 'juni';
  11. $maanden['07'] = 'juli';
  12. $maanden['08'] = 'augustus';
  13. $maanden['09'] = 'september';
  14. $maanden['10'] = 'oktober';
  15. $maanden['11'] = 'november';
  16. $maanden['12'] = 'december';
  17.  
  18. $date = explode(' ', $date);
  19. $datum = explode('-', $date[0]);
  20. $tijd = explode(':', $date[1]);
  21.  
  22. return $datum[2] .' ' . $maanden[$datum[1]] . ' ' . $datum[0] . ' ' . $tijd[0] . ':' . $tijd[1] . ':' . $tijd[2];
  23. }
  24. ?>
Offline Gerard - 09/11/2006 17:11 (laatste wijziging 09/11/2006 17:12)
Avatar van Gerard Ouwe rakker
  1. . News
  2. +----------+---------+------------+
  3. | newsid | title | datetime |
  4. +----------+---------+------------+
  5. | 1 | Test | een NOW() |
  6. +----------+---------+------------+



  1. <?php
  2.  
  3. $qGetNewsItem = mysql_query("SELECT newsid, title, DATE_FORMAT(datetime, '%d-%m-%Y %H:%i') as datetime
  4. FROM News
  5. WHERE newsid = 1");
  6.  
  7. echo '<pre>', var_dump(mysql_fetch_array($qGetNewsItem)), '</pre>';


MySQL Documentatie
Offline Ultimatum - 09/11/2006 17:39
Avatar van Ultimatum PHP expert Proximus, dat had ik al gevonden op mysql.com en ik had ook een scrpt waar dat werd toegepast maar kreeg niets te zien.

Ook heb ik in jou voorbeeld nog steeds niet de maanden in woorden maar cijfers..
Offline Dark_Paul - 09/11/2006 18:09
Avatar van Dark_Paul PHP ver gevorderde Met de Date_format kan je het al als maand ophalen.
http://www.site...=469#datum
Dat doe je met %M.
Offline Ultimatum - 09/11/2006 18:14
Avatar van Ultimatum PHP expert Klopt maar zoals je al aan mijn array kan zien, wil de nederlandse tijd en niet de engelse en als ik %M zou gebruiken moet ik het alsnog gaan omzetten.
Offline Gerard - 09/11/2006 19:57
Avatar van Gerard Ouwe rakker
Citaat:
Klopt maar zoals je al aan mijn array kan zien, wil de nederlandse tijd en niet de engelse en als ik %M zou gebruiken moet ik het alsnog gaan omzetten.


Dan doe je dat gewoon, maar dan doe je dat met een str_replace en niet met de belachelijke functie die je nu gebruikt. Dit is de enige echt correcte manier van doen. Als er bij jou nou iets veranderd in de interne structuur van MySQL dan klopt er helemaal niks meer van.
Offline Ultimatum - 09/11/2006 20:00
Avatar van Ultimatum PHP expert Ja daar heb je ook weer gelijk in. Maar ik was niet van plan iets aan de interne structuur te gaan veranderen 
Offline Dark_Paul - 09/11/2006 20:16
Avatar van Dark_Paul PHP ver gevorderde Maar misschien is het toch wel slim om te doen wat Proximus zegt. Gewoon een simpele str_replace functie voor het omzetten van Engels in Nederlands. Waarom zou je moeilijk doen als het gemakkelijk kan he!
Offline Gerard - 10/11/2006 02:28 (laatste wijziging 10/11/2006 02:29)
Avatar van Gerard Ouwe rakker Dan alleen nog even hoe ik het omzetten van engels naar nederlands zou doen via str_replace:
  1. <?php
  2.  
  3. $aMonthTranslation = array(
  4. 'January' => 'januari',
  5. 'February' => 'februari',
  6. 'March' => 'maart'
  7. );
  8.  
  9. $aQueryResult['datetime'] = str_replace(array_keys($aMonthTranslation), array_values($aMonthTranslation), $aQueryResult['datetime']);


Daarnaast is het anders wel eens handig om dit artikel door te lezen. Daar staat ook een handigheidje in die je misschien wel kan toepassen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.264s