Avatar billede webcreator Nybegynder
18. juli 2004 - 21:09 Der er 9 kommentarer og
1 løsning

Unixtime og date() funktionen

Hej Eksperter.

Jeg har flg. kode :

$unixtime    = strtotime($output2["lastpost"]);
$date        = date("d/m Y", $unixtime);
$time        = date("H:i", $unixtime);

Hvis jeg laver en:  echo $time
Så får jeg blot: 00:00

Indholdet af mit datetime-felt i databasen er : 2004-07-18 12:23:27

Nogen der kan hjælpe mig?
Avatar billede detox Nybegynder
18. juli 2004 - 21:28 #1
Har du tjekket hvad: $output2["lastpost"] indeholder?
Avatar billede erikjacobsen Ekspert
18. juli 2004 - 21:44 #2
lav konverteringen i mysql
  select ..... to_unixtime(lastpost) as unixtime ...
Avatar billede webcreator Nybegynder
18. juli 2004 - 21:47 #3
Det sjove er at $date indeholder den korrekte værdi.

Erik > Tak, men jeg vil gerne vide hvad søren der er gået galt.
Avatar billede detox Nybegynder
18. juli 2004 - 21:50 #4
Jeg vil foretrække at lave formateringen i forespørgslen, men jeg kan ikke se noget galt i din kode og dette virker:

<?php
$output2["lastpost"] = "2004-07-18 12:23:27";
$unixtime    = strtotime($output2["lastpost"]);
$date        = date("d/m Y", $unixtime);
$time        = date("H:i", $unixtime);
echo $time;
?>
Avatar billede webcreator Nybegynder
18. juli 2004 - 22:10 #5
Har fundet fejlen. Jeg har 2 datetime felter i min DB, og havde hentet dataet fra den forkert (doh!). Jeg tror jeg tager mig en pause :)
Avatar billede webcreator Nybegynder
18. juli 2004 - 22:10 #6
Tak for hjælpen though
Avatar billede erikjacobsen Ekspert
18. juli 2004 - 22:23 #7
Mit råd om konvertering i mysql var måske ikke helt gennemtænkt, da jeg ikke så
hvad det var det skulle bruges til. Men det var begrundet i at man har 2 valgmuligheder
ved datoer - den tekstuelle repræsentation, som spørgeren har, eller unixtime, dvs.
antal sekunder siden ... øh ... engang.

Hvis du rent faktisk havde brug for unixtime er det i mine øjne bedre at
placere konverteringen i sql-en, da man så efterfølgende kan kigge sql-sætningerne
igennem og se om den anden repræsentation ville have være bedre. Det virker
selvfølgelig bedst hvis man har anbragt al sql i sit eget modul (som man bør...)

Men spørgeren har reelt ikke noget at bruge unixtime til, for det skal alligevel
konverteres tilbage til tekst. Ovenstående stump kode laver derfor for meget
arbejde, og kan efter min mening bedre laves med udgangspunkt i denne stump:

  $t = '2004-07-18 12:23:27';
  $a=split(':| |-',$t);
  print "$a[3]:$a[4]";

der udskriver "12:23".
Avatar billede webcreator Nybegynder
19. juli 2004 - 16:22 #8
Aha - det vil jeg lige tage med i mine overvejelse - tak for det :)
Avatar billede detox Nybegynder
19. juli 2004 - 22:52 #9
Jeg synes nu det er mest praktisk at hente det færdigformateret fra MySQL:

SELECT DATE_FORMAT (datetime_felt, '%H:%i') AS tid, DATE_FORMAT (datetime_felt, '%d/%m %Y') AS dato FROM tabel
Avatar billede webcreator Nybegynder
19. juli 2004 - 22:53 #10
Smart, tak Detox :)
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