Avatar billede bootlab Nybegynder
07. februar 2015 - 13:54 Der er 8 kommentarer og
1 løsning

JSON date problemer

Hvordan kan jeg få udskrevet (echo) datoen i php, fra JSON data i eksemplet herunder?:

[
{"Id":1,"Navn":"A","Startdato":"\/Date(1423436400000)\/"},
{"Id":2,"Navn":"B","Startdato":"\/Date(1424041200000)\/"},
{"Id":3,"Navn":"C","Startdato":"\/Date(1424041200000)\/"}
]

Jeg har prøvet lidt af hvert, men fatter ikke hvordan jeg 'hiver' tallet ud af \/Date(###########)\/.

foreach ($courses as $course) {
echo $course->{'Startdato'} . '<br>';
$dato = $course->{'Startdato'};
$date->setTimestamp($dato);
echo $date->format('U = Y-m-d H:i:s') . '<br>';
echo $course->{'Navn'} . ', id : '. $course->{'Id'} .'<br><br>';
}

Jeg håber I kan hjælpe mig videre!
Avatar billede olsensweb.dk Ekspert
07. februar 2015 - 15:24 #1
vertion 0 kunne se sådan ud
     
<?php
$courses = json_decode('
[
{"Id":1,"Navn":"A","Startdato":"\/Date(1423436400000)\/"},
{"Id":2,"Navn":"B","Startdato":"\/Date(1424041200000)\/"},
{"Id":3,"Navn":"C","Startdato":"\/Date(1424041200000)\/"}
]');

foreach ($courses as $course) {
$dato = $course->{'Startdato'};
$array = array( '/Date('=>"", ')/'=>"");
// fjerner /Date( og )/
$clean_date =  strtr($dato, $array);
echo date('Y-m-d H:i:s',$clean_date );
echo '<br>';
echo $course->{'Navn'} . ', <br> id : '. $course->{'Id'} .'<br><br>';
}
?>



udskrift
     
2027-02-10 03:03:44
A,
id : 1

1910-03-05 20:35:28
B,
id : 2

1910-03-05 20:35:28
C,
id : 3
Avatar billede bootlab Nybegynder
07. februar 2015 - 18:29 #2
Mange tak, det var lige hvad jeg skulle bruge - læg et svar så du kan få dine point!
Avatar billede olsensweb.dk Ekspert
07. februar 2015 - 19:15 #3
>læg et svar
får du her
Avatar billede arne_v Ekspert
07. februar 2015 - 23:34 #4

<?php
$courses = json_decode('[
{"Id":1,"Navn":"A","Startdato":"\/Date(1423436400000)\/"},
{"Id":2,"Navn":"B","Startdato":"\/Date(1424041200000)\/"},
{"Id":3,"Navn":"C","Startdato":"\/Date(1424041200000)\/"}
]');

foreach ($courses as $course) {
    $dt = str_replace(array('/Date(', ')/'), array('', ''), $course->Startdato) / 1000;
    echo sprintf("Id=%d Navn=%s Startdato=%s\r\n", $course->Id, $course->Navn, date('Y-m-d H:i:s', $dt));
}
?>


giver:

Id=1 Navn=A Startdato=2015-02-08 18:00:00
Id=2 Navn=B Startdato=2015-02-15 18:00:00
Id=3 Navn=C Startdato=2015-02-15 18:00:00

Og paa en eller anden maade synes jeg at de datoer virker mere realistiske !
Avatar billede arne_v Ekspert
07. februar 2015 - 23:36 #5
Den vigtigste forskel er at jeg dividerer med 1000 fordi jeg tror at det er millisekunder ikke sekunder.
Avatar billede olsensweb.dk Ekspert
08. februar 2015 - 04:57 #6
>Og paa en eller anden maade synes jeg at de datoer virker mere realistiske !

>jeg dividerer med 1000 fordi jeg tror at det er millisekunder ikke sekunder.

det kan du have ret i !, undrede mig også over datoerne
Avatar billede bootlab Nybegynder
08. februar 2015 - 10:08 #7
Tak, Arne for dit skarpe eksempel.. det er sq rart at vide du stadigvæk rykker her på eksperten. du må da snart få en pris af dem :)

Mht. til unix tiden så blev jeg meget tidligt klar over, at det skulle divideres med 1000.
Måske kan I fortælle mig hvorfor at datoen efter dividering, er en dag tidligere end det skulle være! .. jeg har været nød til at lægge et døgns sekunder til tallet for at få det til at stemme, hvilket jo ikke er optimalt, men det virker. Kan det have noget at gøre med GMT.

Hvis I mener at mit spørgsmål, kræver jeg laver et nyt indlæg, så gør jeg gerne det :)
Avatar billede arne_v Ekspert
08. februar 2015 - 17:02 #8
Et det altid praecis 24 timer off?

Har du sat locale?
Avatar billede bootlab Nybegynder
09. februar 2015 - 10:09 #9
Ja, det sker på samtlige tider. Så det må være dem som levere JSON feed'et der har et problem, ved næremere eftertanke. Så jeg vil lige henvende mig til dem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester