[PHP] Datum omvormen in array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Cerntje
  • Registratie: September 2003
  • Laatst online: 09-09 06:57
Ik heb gezocht in de search en de manual van PHP nagelezen, maar ik kom er nog steeds niet geheel uit.

Ik haal een array van datums uit een Oracle database die overgezet moet worden naar een MySQL database. De format van datum uit de Oracle database is bijvoorbeeld: 12-JAN-04, 19-AUG-79.

Deze datums moeten omgezet worden naar het formaat DD-MM-YYYY. Ik heb een stukje code geschreven, maar dat werkt nog niet naar behoren:

PHP:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*  Date change function  */ 

//Statische array voor testing

$maand_value = array("12-JAN-05", "11-FEB-97", "09-SEP-04");

$dag = substr($maand_value, 0, 2); 
$maand = substr($maand_value, 3, 3); 
$jaar = substr($maand_value, 7, 2); 

foreach($maand_value as $maand){  

if ($maand == "JAN") { 
    $maand = "01";
} elseif ($maand == "FEB") { 
    $maand = "02";
} elseif ($maand == "MAR") { 
    $maand = "03";
} elseif ($maand == "APR") { 
    $maand = "04";
} elseif ($maand == "MAY") { 
    $maand = "05";
} elseif ($maand == "JUN") { 
    $maand = "06";
} elseif ($maand == "JUL") { 
    $maand = "07";
} elseif ($maand == "AUG") { 
    $maand = "08";
} elseif ($maand == "SEP") { 
    $maand = "09";
} elseif ($maand == "OCT") { 
    $maand = "10";
} elseif ($maand == "NOV") { 
    $maand = "11";
} elseif ($maand == "DEC") { 
    $maand = "12"; 
}

$maand_array = $dag."-".$maand."-".$jaar;
}

echo "<BR>";

print_all_array($maand_array);

function print_all_array($array) { 
    foreach ($array as $value) { 
        echo "$value<BR>"; 
    } 
}


Wanneer ik de 'nieuwe' array met een echo weergeef zie ik alleen de laatste entry met gewijzigde data of alleen 'array'. Ik heb het ook al met een for-lus geprobeerd, maar veel verder kwam ik daar ook niet mee.

Enige ideeen ?

Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Gebruik explode en een array voor maandnamen ipv zoveel if'jes...

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
PHP:
39
$maand_array[] = $dag."-".$maand."-".$jaar;
Let op de twee rechte haken... En waarom gebruik je niet gewoon print_r als je alleen de array hoeft te printen :?

Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 18-09 19:05
Waarom moeilijk doen? Wel eens van de Date/Time functies gehoord in PHP?
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$maand_value = array("12-JAN-05", "11-FEB-97", "09-SEP-04");

for ($i = 0; $i < sizeof($maand_value); $i++)
{
    $maand_array[] = date("d-m-Y",strtotime($maand_value[$i]));
}

print_r($maand_array);
?>

Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

naar unix timestamp: http://nl.php.net/manual/en/function.strtotime.php
terug in gewenst format: http://nl.php.net/manual/en/function.date.php

:)

edit:
The postman just rang once - but quick he is :{ ;)

[ Voor 18% gewijzigd door Rataplan op 01-11-2004 16:14 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

  • Cerntje
  • Registratie: September 2003
  • Laatst online: 09-09 06:57
Postman schreef op 01 november 2004 @ 16:08:
Waarom moeilijk doen? Wel eens van de Date/Time functies gehoord in PHP?
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$maand_value = array("12-JAN-05", "11-FEB-97", "09-SEP-04");

for ($i = 0; $i < sizeof($maand_value); $i++)
{
    $maand_array[] = date("d-m-Y",strtotime($maand_value[$i]));
}

print_r($maand_array);
?>
Met het advies van Ludo werkte het scriptje uiteindelijk ook. Maar nu ik dit zie wordt het een stuk overzichtelijker, bedankt :)

@Rataplan, ook bedankt voor jou deel ;)
Pagina: 1