Avatar billede brianmilan Juniormester
08. april 2008 - 13:06 Der er 15 kommentarer og
1 løsning

Formatere måned til Dansk.

Hej,

Jeg har et lille problem, når jeg skal udtrække en dato fra min MySQL database.
Jeg har et felt hvor jeg indtaster en dato for hvornår en dvdfilm har premiere, måden dato bliver lagt ind i MySQL databasen er YYYY-MM-DD og når jeg for dem ud igen har jeg formateret dem på denne måde:

date_format(DVD_Premieredato, '%j. %F %Y') as DVD_Premieredato

Når jeg så får det ud i PHP står DD. MMMM YYYY men måneden står på engelsk...

Er der nogen der kan hjælpe mig så jeg kan få den på dansk?  :-)

Venlig hilsen
Brian
Avatar billede jakobdo Ekspert
08. april 2008 - 13:30 #1
Når du trækker datoen ud af mysql, så brug:

UNIX_TIMESTAMP(DVD_Premieredato) AS unixDato

Og brug så unixDato i php funktionen:

setlocale() //Skal sættes til DANSK, da_dk, danish eller hvad den hedder på din server/webhotel.

og strftime()
Avatar billede brianmilan Juniormester
08. april 2008 - 13:39 #2
Hej jakobdo, skal jeg så skrive <?php echo "unixDato"; ?> der hvor jeg gerne vil have datoen?

setlocale() og strftime() ved jeg ikke lige hvor jeg skal skrive dem.
Avatar billede jakobdo Ekspert
08. april 2008 - 13:45 #3
Noget i stil med:
setlocale (LC_TIME, 'da_DK'); //denne kan skulle laves anderledes...
$query = mysql_query("SELECT UNIX_TIMESTAMP(DVD_Premieredato) AS unixDato FROM tabel ....");
while($row = mysql_fetch_assoc($query)){
echo strftime("%d. %B %Y",$row['unixDato']) . '<br />';
}
Avatar billede brianmilan Juniormester
08. april 2008 - 14:12 #4
Tak, det er meget tæt på at lykkede, nu har jeg fået måneden på dansk :-) men den skriver 01. januar 1970 i stedet for den dato hvor filmen har premiere...
Min kode ser sådan 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']);
?>
Avatar billede jakobdo Ekspert
08. april 2008 - 14:35 #5
Hvilket format gemmer du datoer i i din database/tabel ?
Avatar billede brianmilan Juniormester
08. april 2008 - 14:46 #6
Det bliver gemt med YYYY-MM-DD
Avatar billede jakobdo Ekspert
08. april 2008 - 14:53 #7
Jeg tænker hvilken datatype?
Avatar billede brianmilan Juniormester
08. april 2008 - 15:19 #8
Okay på den måde :-)  Datatypen er DATE
Avatar billede jakobdo Ekspert
08. april 2008 - 15:24 #9
Så burde det altså virke med UNIX_TIMESTAMP (tror jeg nok) :o)
Avatar billede brianmilan Juniormester
08. april 2008 - 21:07 #10
Nu virker det :o) I stedet for at jeg skrev echo strftime("%d. %B %Y",$row['unixDato_dvd']); udskiftede jeg 'unixDato_dvd' med [8] så den tager Row'en.

Ved du evt. hvordan jeg får fjernet nullet i dato'en f.eks, nu står der 08. april 2008, jeg kunne godt tænke mig hvis der bare kunne stå 8. april 2008...

Kunne jeg få dig til at lægge et svar? :o)
Avatar billede brianmilan Juniormester
08. april 2008 - 21:08 #11
Jeg glemte at sige mange tak for hjælpen...
Avatar billede jakobdo Ekspert
08. april 2008 - 22:36 #12
du kan rette %d til %e, den vil dog sætte et space foran 1 - 9.
Men prøv.
Avatar billede brianmilan Juniormester
10. april 2008 - 08:49 #13
Det virkede desværre ikke, men jeg kan også sagtens bruge det som det står nu f.eks. 08. april 2008.. Kunne jeg få dig til at lægge et svar, så vil jeg straks give dig point'ne :o)
Avatar billede jakobdo Ekspert
10. april 2008 - 08:56 #14
Svar!
Avatar billede brianmilan Juniormester
10. april 2008 - 09:21 #15
Tak :o)
Avatar billede jakobdo Ekspert
10. april 2008 - 09:42 #16
Takker for point.
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