date_format
Ultimatum - 09/11/2006 15:54 (laatste wijziging 09/11/2006 15:55)
PHP 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:
<?php
function datum($date)
{
$maanden = array();
$maanden['01'] = 'januari';
$maanden['02'] = 'februari';
$maanden['03'] = 'maart';
$maanden['04'] = 'april';
$maanden['05'] = 'mei';
$maanden['06'] = 'juni';
$maanden['07'] = 'juli';
$maanden['08'] = 'augustus';
$maanden['09'] = 'september';
$maanden['10'] = 'oktober';
$maanden['11'] = 'november';
$maanden['12'] = 'december';
list($datum, $tijd) = explode(' ', $date);
list($jaar, $maand, $dag) = explode('-', $datum);
list($uren, $minuten, $seconden) = explode(':', $tijd);
return date('d-m-Y H:i', mktime($uren, $minuten, $seconden, $maand, $dag, $jaar));
}
?>
<?php
function datum( $date )
{
$maanden [ '01' ] = 'januari' ;
$maanden [ '02' ] = 'februari' ;
$maanden [ '03' ] = 'maart' ;
$maanden [ '04' ] = 'april' ;
$maanden [ '05' ] = 'mei' ;
$maanden [ '06' ] = 'juni' ;
$maanden [ '07' ] = 'juli' ;
$maanden [ '08' ] = 'augustus' ;
$maanden [ '09' ] = 'september' ;
$maanden [ '10' ] = 'oktober' ;
$maanden [ '11' ] = 'november' ;
$maanden [ '12' ] = 'december' ;
list ( $uren , $minuten , $seconden ) = explode ( ':' , $tijd ) ;
return date ( 'd-m-Y H:i' , mktime ( $uren , $minuten , $seconden , $maand , $dag , $jaar ) ) ; }
?>
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
compudoc - 09/11/2006 16:08
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
MindPrison - 09/11/2006 16:14 (laatste wijziging 09/11/2006 16:15)
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:
<?php
function datum($date)
{
$maanden = array();
$maanden['01'] = 'januari';
$maanden['02'] = 'februari';
$maanden['03'] = 'maart';
$maanden['04'] = 'april';
$maanden['05'] = 'mei';
$maanden['06'] = 'juni';
$maanden['07'] = 'juli';
$maanden['08'] = 'augustus';
$maanden['09'] = 'september';
$maanden['10'] = 'oktober';
$maanden['11'] = 'november';
$maanden['12'] = 'december';
list($datum, $tijd) = explode(' ', $date);
list($jaar, $maand, $dag) = explode('-', $datum);
list($uren, $minuten, $seconden) = explode(':', $tijd);
return date('d-m-Y H:i', mktime(intval($uren), intval($minuten), intval($seconden), intval($maand), intval($dag), intval($jaar)));
}
?>
<?php
function datum( $date )
{
$maanden [ '01' ] = 'januari' ;
$maanden [ '02' ] = 'februari' ;
$maanden [ '03' ] = 'maart' ;
$maanden [ '04' ] = 'april' ;
$maanden [ '05' ] = 'mei' ;
$maanden [ '06' ] = 'juni' ;
$maanden [ '07' ] = 'juli' ;
$maanden [ '08' ] = 'augustus' ;
$maanden [ '09' ] = 'september' ;
$maanden [ '10' ] = 'oktober' ;
$maanden [ '11' ] = 'november' ;
$maanden [ '12' ] = 'december' ;
list ( $uren , $minuten , $seconden ) = explode ( ':' , $tijd ) ;
}
?>
Ultimatum - 09/11/2006 16:43 (laatste wijziging 09/11/2006 16:57)
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
<?php
function datum($date)
{
$maanden = array();
$maanden['01'] = 'januari';
$maanden['02'] = 'februari';
$maanden['03'] = 'maart';
$maanden['04'] = 'april';
$maanden['05'] = 'mei';
$maanden['06'] = 'juni';
$maanden['07'] = 'juli';
$maanden['08'] = 'augustus';
$maanden['09'] = 'september';
$maanden['10'] = 'oktober';
$maanden['11'] = 'november';
$maanden['12'] = 'december';
$date = explode(' ', $date);
$datum = explode('-', $date[0]);
$tijd = explode(':', $date[1]);
return $datum[2] .' ' . $maanden[$datum[1]] . ' ' . $datum[0] . ' ' . $tijd[0] . ':' . $tijd[1] . ':' . $tijd[2];
}
?>
<?php
function datum( $date )
{
$maanden [ '01' ] = 'januari' ;
$maanden [ '02' ] = 'februari' ;
$maanden [ '03' ] = 'maart' ;
$maanden [ '04' ] = 'april' ;
$maanden [ '05' ] = 'mei' ;
$maanden [ '06' ] = 'juni' ;
$maanden [ '07' ] = 'juli' ;
$maanden [ '08' ] = 'augustus' ;
$maanden [ '09' ] = 'september' ;
$maanden [ '10' ] = 'oktober' ;
$maanden [ '11' ] = 'november' ;
$maanden [ '12' ] = 'december' ;
return $datum [ 2 ] . ' ' . $maanden [ $datum [ 1 ] ] . ' ' . $datum [ 0 ] . ' ' . $tijd [ 0 ] . ':' . $tijd [ 1 ] . ':' . $tijd [ 2 ] ;
}
?>
Gerard - 09/11/2006 17:11 (laatste wijziging 09/11/2006 17:12)
Ouwe rakker
. News
+----------+---------+------------+
| newsid | title | datetime |
+----------+---------+------------+
| 1 | Test | een NOW() |
+----------+---------+------------+
. News
+----------+---------+------------+
| newsid | title | datetime |
+----------+---------+------------+
| 1 | Test | een NOW( ) |
+----------+---------+------------+
<?php
$qGetNewsItem = mysql_query("SELECT newsid, title, DATE_FORMAT(datetime, '%d-%m-%Y %H:%i') as datetime
FROM News
WHERE newsid = 1");
echo '<pre>', var_dump(mysql_fetch_array($qGetNewsItem)), '</pre>';
<?php
$qGetNewsItem = mysql_query ( "SELECT newsid, title, DATE_FORMAT(datetime, '%d -%m-%Y %H:%i') as datetime FROM News
WHERE newsid = 1" ) ;
MySQL Documentatie
Ultimatum - 09/11/2006 17:39
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..
Ultimatum - 09/11/2006 18:14
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.
Gerard - 09/11/2006 19:57
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.
Dark_Paul - 09/11/2006 20:16
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!
Gerard - 10/11/2006 02:28 (laatste wijziging 10/11/2006 02:29)
Ouwe rakker
Dan alleen nog even hoe ik het omzetten van engels naar nederlands zou doen via str_replace:
<?php
$aMonthTranslation = array(
'January' => 'januari',
'February' => 'februari',
'March' => 'maart'
);
$aQueryResult['datetime'] = str_replace(array_keys($aMonthTranslation), array_values($aMonthTranslation), $aQueryResult['datetime']);
<?php
$aMonthTranslation = array ( 'January' => 'januari' ,
'February' => 'februari' ,
'March' => 'maart'
) ;
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 .