Avatar billede jakobdo Ekspert
11. marts 2004 - 15:30 Der er 13 kommentarer og
1 løsning

Konvertere DateTime felt til: Dag, Dato og Tid.

Hej,
jeg har følgende felt i min Mysql-database.
Jeg laver følgende udtræk:
$q = mysql_query("SELECT * FROM tabel");
while ($r = mysql_fetch_assoc($q))
{
echo $r['datotid']); //indeholder: 2004-04-18 10:10:00
}
Jeg vil formattere sådan at jeg får værdierne:
Dag: lørdag, søndag osv...
Dato: 18-04-2004
Tid: 10:10:00

Måske der skal noget PHP med ind over...
Men vidste ikke hvor jeg skulle oprette det.
Avatar billede mr-super Nybegynder
11. marts 2004 - 15:32 #1
Hvad med først af ligge: or die (mysql_error()); i den?


$q = mysql_query("SELECT * FROM tabel") or die (mysql_error());
while ($r = mysql_fetch_assoc($q))
{
echo $r['datotid']); //indeholder: 2004-04-18 10:10:00
}
Avatar billede jakobdo Ekspert
11. marts 2004 - 15:36 #2
Min kode virker godt nok...
Jeg vil vide hvordan jeg får mit "felt" DATETIME konverteret til:

DAG, DATO og TID...
(nu er det samlet i et felt: DATETIME - 2004-04-18 10:10:00)
Det skal jeg have splittet...
Avatar billede detox Nybegynder
11. marts 2004 - 16:03 #3
Så kan du hente datoen som et unix timestamp og derefter udskrive det i php:

setlocale(LC_TIME, 'da');
$q = mysql_query("SELECT *, UNIX_TIMESTAMP(datotid) AS unix FROM tabel");
while ($r = mysql_fetch_assoc($q))
{
echo strftime('%A %d-%m-%Y %H:%M:%S', $r['unix'])."<br />";
}
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:00 #4
Jeg løste det på denne måde:
echo date("d-m-Y",strtotime($r['datotid']));
echo date("H:i",strtotime($r['datotid']));

Så lukker igen...
Avatar billede detox Nybegynder
12. marts 2004 - 11:03 #5
Men så får du da ikke: Dag: lørdag, søndag osv..., som du skrev?
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:05 #6
Løste jeg med denne funktion:
function daDay($iDay)
{
    switch($iDay)
    {
        case 0:
            $rDay = "Søn";
            break;
        case 1;
            $rDay = "Man";
            break;
        case 2;
            $rDay = "Tirs";
            break;
        case 3;
            $rDay = "Ons";
            break;
        case 4;
            $rDay = "Tors";
            break;
        case 5;
            $rDay = "Fre";
            break;
        case 6;
            $rDay = "Lør";
            break;
        default:
            $rDay = "???";
    }
    return $rDay;
}
og så kaldet:
echo daDay(date("w",strtotime($r['datotid'])));
Avatar billede detox Nybegynder
12. marts 2004 - 11:07 #7
Ok, jeg går ud fra du ikke kunne få mit forslag til at virke siden du har lavet det på den omstændige måde.
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:10 #8
Jeg har ikke prøvet din, men takker for forsøget...
Havde lavet det andet inden...
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:26 #9
Din løsning virker ikke: på datetime feltet: 2004-04-18 10:10:00
giver den svar: Sunday 18-04-2004 10:10:00
Avatar billede detox Nybegynder
12. marts 2004 - 11:33 #10
Det er sikkert setlocale() der driller. Den er rar at have, hvis man kan få det til at virke. Du kunne fx prøve:

setlocale(LC_TIME, 'danish'); // eller 'da_DK' eller måske 'da_DK.ISO8859-1' (der er flere muligheder).
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:47 #11
Ahh...
Løsningen var: setlocale(LC_TIME, 'da_DK.ISO_8859-1');
Avatar billede jakobdo Ekspert
12. marts 2004 - 11:47 #12
Vil du have point, så kan jeg oprette et for at give dig point...
Avatar billede detox Nybegynder
12. marts 2004 - 11:58 #13
Nej, skidt med det. Godt du kunne få det til at fungere, det gør livet noget lettere ;o)
Avatar billede jakobdo Ekspert
12. marts 2004 - 12:00 #14
Hvor har du dog ret...
Altid lækkert at lære noget nyt! Takker...
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
Computerworld tilbyder specialiserede kurser i database-management

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