Avatar billede brevkasserne Nybegynder
27. september 2002 - 15:38 Der er 11 kommentarer og
1 løsning

Dato-format igen igen igen!!!

Jeg har denne dato liggende i en database:

2002-09-27 15:40:37

og ville gerne have den udskrevet som henholdsvis

27. august 2002, 15:40:37

og

27.09.2002 15:40:37

Hvordan gør jeg det nemt og bekvemt!
Avatar billede brevkasserne Nybegynder
27. september 2002 - 15:44 #1
Det skal laves som funktion så jeg bare kan skrive f.eks.

<? echo paendato($str['dato']); ?>

eller noget lign...
Avatar billede brevkasserne Nybegynder
27. september 2002 - 15:44 #2
Og jeg har prøvet at søge på eksperten.dk efter lign. spørgsmål/svar, men kan ikke finde noget.
Avatar billede brevkasserne Nybegynder
27. september 2002 - 15:46 #3
Ups, jeg mener ikke:

27. august 2002, 15:40:37

men selvfølgelig:

27. september 2002, 15:40:37
Avatar billede whatever Nybegynder
27. september 2002 - 16:11 #4
Du kan bruge disse to funktioner:

<?php

    // ------------------------------------------------
    // Returnerer en lang udgave af datoen/tiden.
    // Input: 2002-09-27 15:40:37
    // Output: 27. september 2002, 15:40:37
    // ------------------------------------------------
    function longDate($foo)
    {
        $intYear = substr($foo,0,4);
        $intMonth = substr($foo,5,2);
        $intDay = substr($foo,8,2);
        $strTime = substr($foo,11,8);


        switch ($intMonth) {
            case 1:
                $strMonth = "januar";
                break;
            case 2:
                $strMonth = "februar";
                break;
            case 3:
                $strMonth = "marts";
                break;
            case 4:
                $strMonth = "april";
                break;
            case 5:
                $strMonth = "maj";
                break;
            case 6:
                $strMonth = "juni";
                break;
            case 7:
                $strMonth = "juli";
                break;
            case 8:
                $strMonth = "august";
                break;
            case 9:
                $strMonth = "september";
                break;
            case 10:
                $strMonth = "oktober";
                break;
            case 11:
                $strMonth = "november";
                break;
            case 12:
                $strMonth = "december";
        }

        $strDate = $intDay .". ". $strMonth . " " . $intYear . ", " . $strTime;
        return ($strDate);
    }


    // ------------------------------------------------
    // Returnerer en kort udgave af datoen/tiden.
    // Input: 2002-09-27 15:40:37
    // Output: 27.09.2002 15:40:37
    // ------------------------------------------------
    function shortDate($foo)
    {
        $intYear = substr($foo,0,4);
        $intMonth = substr($foo,5,2);
        $intDay = substr($foo,8,2);
        $strTime = substr($foo,11,8);

        $strDate = $intDay .".". $intMonth . "." . $intYear . " " . $strTime;
        return ($strDate);
    }

?>
Avatar billede skumpaq Nybegynder
27. september 2002 - 16:41 #5
Hejsa
Der findes en MEGET nemmere måde at gøre det med datoer på.
Og det er med time() funktionen
time() angiver det antal sekunder der er gået fra den 01-01-1970
Når du har det tal, skal du blot skrive:
date("d-m-y H:i:s",$var); -> Hvilket resulterer i fx: 27-09-2002 16:49:13
Læs mere her: http://dk.php.net/manual/en/function.time.php

/SkumPaq
Avatar billede whatever Nybegynder
27. september 2002 - 17:45 #6
Det skal selvfølgelig siges, at skumpag's forslag udskriver engelske måneds-navne.
Avatar billede skumpaq Nybegynder
27. september 2002 - 17:48 #7
Det skal så lige siges at det er et spørgsmål om at lave en class eller en funktion der skriver det om til dansk, ikke? :)
Avatar billede alrua Nybegynder
28. september 2002 - 01:33 #8
Hvis du har datoen stående i et felt af typen datetime, kan du MySQL gøre det for dig:

mysql_query("SELECT DATE_FORMAT(dato_felt, '%c. %M %Y, %T') as dato FROM dato_tabel");

Så skal du bare lave en function der bruger str_replace til at skrive det om til danske navne...

-Alrua
Avatar billede alrua Nybegynder
28. september 2002 - 01:34 #9
BTW: du kan læse mere om mysql og datoer her:
http://www.mysql.com/doc/en/Date_and_time_functions.html

Men jeg vil give skumpaq ret i at det er nemmere hvis du gemmer alle datoer som unix time (dvs time()) i integerfelter :)

-Alrua
Avatar billede brevkasserne Nybegynder
28. september 2002 - 13:46 #10
Nu har jeg lavet denne funktion:

<?php
function dato($str) {
$str = time($str);
$str = date("d.m.Y H:i:s",$str);
return $str;
}

Men den returnere bare datoen p.t. og ikke det fra databasen?
Avatar billede skumpaq Nybegynder
28. september 2002 - 13:52 #11
Du behøver slet ikke lave en funktion til det.
Jeg laver lige et ex:
$var = timestamp fra tabellen

echo date("d.m.Y H:i:s",$var);

Sådan der.

Du skal huske at time() er void.
så skal du have en funktion skulle den se sådan ud:

<?
function dato($var){
  $out = date("d.m.Y H:i:s",$var);
  return $out;
}

echo dato($var);
?>

Hjælper det nu?

/SkumPaq
Avatar billede brevkasserne Nybegynder
28. september 2002 - 14:06 #12
Ok, takker for 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