Avatar billede brianmilan Juniormester
30. april 2008 - 11:04 Der er 13 kommentarer og
1 løsning

UNIX_TIMESTAMP viser forkert dato alt efter hvilket år man er i.

Hej,

Jeg har fået et lille problem, når jeg i min MySQL database indtaster datoen 1970-10-21 og gemmer og bagefter trækker det ud via PHP viser den datoen 20. oktober 1977 og ikke 21. oktober 1977, men hvis jeg skriver den samme dato bare i f.eks. 2008, vil den godt skrive 21. oktober 2008. Ved I evt, hvad det kan være?
Min kode ser sådan her ud:

<?php
setlocale (LC_TIME, 'danish');
$rows = mysql_query("SELECT dvd_film_ID,
                            Original_Titel,
                            Dansk_Titel,
                            Billedeformat,
                            Filmselskab,
                            Lydformat,
                            Kategori,
                            Regionskode,
                            UNIX_TIMESTAMP(DVD_Premieredato) AS unixDato_dvd,
                            UNIX_TIMESTAMP(Bio_Premieredato) AS unixDato_bio,
                            Produktionsaar,
                            Spilletid FROM alle_dvd_film
                            WHERE dvd_film_ID='$dvd_film_ID'");

$row = mysql_fetch_row($rows);
$dvd_film_ID      = $row[0];
$Original_Titel  = $row[1];
$Dansk_Titel      = $row[2];
$Billedeformat    = $row[3];
$Filmselskab      = $row[4];
$Lydformat        = $row[5];
$Kategori        = $row[6];
$Regionskode      = $row[7];
$unixDato_dvd    = $row[8];
$unixDato_bio    = $row[9];
$Produktionsaar  = $row[10];
$Spilletid        = $row[11];

echo strftime("%d. %B %Y",$row['unixDato_dvd']);
echo strftime("%d. %B %Y",$row['unixDato_bio']);
?>

Venlige hilsner
Brian
Avatar billede jakobdo Ekspert
30. april 2008 - 11:43 #1
Jeg forstår ikke helt dit problem.

Se her:
http://www.codebreaker.dk/exp/829755exp.php
Avatar billede brianmilan Juniormester
30. april 2008 - 12:22 #2
Hej,
Det er underligt at min ikke virker, jeg kan se at på dit eksempel virker det fint...
Avatar billede brianmilan Juniormester
30. april 2008 - 12:24 #3
Tror du ikke at det er i mit PHP dokument der er noget galt? Får når jeg ser på datoen i databasen viser den 1977-10-21
Avatar billede brianmilan Juniormester
30. april 2008 - 12:26 #4
Jeg har lige prøvet at rette datoen i databasen til 1977-10-22 og når jeg skal vise den i PHP skriver den 21. oktober 1977, den er lige en dag bagud i PHP
Avatar billede jakobdo Ekspert
30. april 2008 - 20:38 #5
Prøv for sjov at udskriv dato med:
date('Y-m-d H:i:s',$row['unixDato_dvd']) og se hvad det giver.
Avatar billede erikjacobsen Ekspert
30. april 2008 - 20:46 #6
Hvor i verden er din server? Hvorfor bøvlet med timestamp, når du har en dato? Hvad står der faktisk i tabellen?
Avatar billede brianmilan Juniormester
02. maj 2008 - 13:08 #7
Jeg har lige prøvet at skrive <?php date('Y-m-d H:i:s',$row['unixDato_dvd']);?> men så skriver den 1970-01-01 01:00:00
Avatar billede brianmilan Juniormester
02. maj 2008 - 13:11 #8
Der hvor jeg har min hjemmeside er hos www.needhost.dk, men det underlige er at den også gør det når jeg køre det på min egen webserver på min hjemmecomputer.. Årsagen til at jeg skulle bruge timestamp er at jeg godt kunne tænke mig at når jeg trak datoen ud af databasen så skulle den se sådan her ud f.eks. 2. maj 2008, men inde i databasen står den til 2008-05-02 og jeg har sat datatypen til DATE
Avatar billede erikjacobsen Ekspert
02. maj 2008 - 14:25 #9
$row['unixDato_dvd'] findes heller ikke når du siger mysql_fetch_row. Men hvorfor ikke bare bruge den variabel du har allerede: $unixDato_dvd

Man behøver ikke gå via en unixtimestamp for at få det skrevet ud pænt, men det er selvfølgelig en mulighed.
Avatar billede jakobdo Ekspert
02. maj 2008 - 15:17 #10
UNIXTIMESTAMP skal bruges når man arbejder med strftime() og vil konvertere timen efter lokale indstillinger, f.eks. dansk Januar, Februar osv..
Avatar billede pidgeot Nybegynder
02. maj 2008 - 15:23 #11
Et bud ville være at det har noget at gøre med tidszoner - måske kører din server i virkeligheden CET, men PHP tror den skal bruge UTC (så den trækker en time fra midnat for din dato). Prøv at tage et kig på http://dk.php.net/manual/en/function.date-default-timezone-get.php og http://dk.php.net/manual/en/function.date-default-timezone-set.php og se om du kan bruge det til noget.
Avatar billede erikjacobsen Ekspert
02. maj 2008 - 18:43 #12
Men man behøver så heller ikke bruge strftime() - jeg plejer at lave en passende split på datoen '2008-xx-xx xx:xx:xx' og selv bestemme hvordan den udskrives. unixtimestamp kan indeholde små, meget underholdende, og lettere tidskrævende overraskelser.
Avatar billede brianmilan Juniormester
23. februar 2011 - 22:38 #13
Hej Jakobdo, ErikJacobsen og Pidgeot, kunne jeg få jer til at lægge et svar, så skal jeg nok få givet Jer point.
Avatar billede jakobdo Ekspert
23. februar 2011 - 22:47 #14
Svar
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef til Enterprise Arkitektur i Forsvaret på Østerbro

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

IT-Universitetet i København

CIO