Avatar billede sesam Nybegynder
03. oktober 2004 - 13:17 Der er 10 kommentarer og
2 løsninger

dato spærgsmål

Hvordan laver jeg denne dato: 2004-10-03  om til  Søndag 10 Oktober 2004?
Avatar billede Slettet bruger
03. oktober 2004 - 13:37 #1
<?PHP
$week_name = array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
$month_name = array("","Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December");

// Din variabel hedder i dette eksempel $dato
$dato = "2004-10-03";

// Deler datoen op.
list($year, $month, $day) = explode("-", $dato);

// Laver det til timestamp.
$timestamp = mktime(0, 0, 0, $month, $day, $year);

// Finder ugedagen. i tal fra 0-6 (Søndag = 0, Lørdag = 6).
$iDate = date('w', $timestamp);

// Giver os et navn, istedet for tal.
$week_day = $week_name[$iDate];

// Finder måneden, ud fra vores timestamp.
$iMonth = date('n', $timestamp);

// Laver det til et rigtig navn.
$month_name = $month_name[$iMonth];

// Udskriver datoen.
echo "$week_day den $iMonth $month_name $year";
?>
Avatar billede Slettet bruger
03. oktober 2004 - 13:38 #2
Jeg gik ud fra du mente "Søndag den 03 Oktober 2004 :)
Avatar billede sukos Juniormester
03. oktober 2004 - 13:49 #3
hehe, samme, men i en function (og kun 3. og ikke 03):

function ny_dato($var) {
$dage = array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");
$maaneder = array("tom", "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");

$tider = explode("-", $var);

if(count($tider) == 3) {
    $unixtid = mktime(0,0,0, $tider[1], $tider[2], $tider[0]);
    $dagen = date("w", $unixtid);
    $dato = date("j", $unixtid);
    $maaned = date("m", $unixtid);
    return $dage[$dagen] ." d. ". $dato .". ". $maaneder[$maaned];
    }else{
    return "n/a";
    }
}

echo ny_dato("2004-10-03");
?>

Men mener der er et eller andet med at kunne bruge strftotime men, cypermann's og mit eks. er "dødsikker" :O)
Avatar billede Slettet bruger
03. oktober 2004 - 13:53 #4
heh, ja det ville nok være noget nemmere og mere overskueligt at gøre det i en enkelt funktion :)
Avatar billede coderdk Praktikant
03. oktober 2004 - 17:42 #5
<?php

    $date = strtotime( "2004-10-03" );
    setlocale( LC_TIME, "da_DK" );
    echo ucwords( strftime( "%A %e %B %Y", $date ) );

?>

Hvis setlocale( LC_TIME, "da_DK" ) ikke virker, så prøv med setlocale( LC_TIME, "dan" );
Avatar billede sesam Nybegynder
03. oktober 2004 - 17:43 #6
Coderdk: Kan man også skrive den ud på amerikansk format...?
Avatar billede coderdk Praktikant
03. oktober 2004 - 17:46 #7
Da den pr. default er engelsk (de fleste steder), burde du kunne udkommentere setlocale - ellers hedder den vist setlocale( LC_TIME, "en_US" );
Men denne burde nu virke:

<?php

    $date = strtotime( "2004-10-03" );
    //setlocale( LC_TIME, "da_DK" );
    echo ucwords( strftime( "%A %e %B %Y", $date ) );

?>
Avatar billede coderdk Praktikant
03. oktober 2004 - 17:47 #8
Alternativt bør man smide sin setlocale() et sted og include den hvor man bruger dato/tid, så skal man kun rette ét sted for at lave sproget om ;)
Avatar billede sukos Juniormester
03. oktober 2004 - 18:15 #9
Der er bare en del "bøf" om setlocale(), derfor er cypermann og min måde at gøre det på, "100%"
http://dk.php.net/manual/da/function.setlocale.php
Avatar billede sukos Juniormester
03. oktober 2004 - 18:16 #10
bøf => Du kan ikke være 100% på at serveren som afvikler scriptet, returnerer hvad du forventer
Avatar billede coderdk Praktikant
03. oktober 2004 - 18:20 #11
Det eneste "bøf" jeg har oplevet, er at man lige skal finde den locale-kode der virker - da/da_DK/dan/danish alt efter om du kører linux eller windows. Alle de linuxmaskiner jeg har prøvet det på, virkede det i første forsøg med da_DK / en_UK osv.

Man kan evt. prøve med da_DK.ISO8859-1
Avatar billede cpfrande Nybegynder
04. oktober 2004 - 10:26 #12
cybermann skriver:
echo "$week_day den $iMonth $month_name $year";

Burde det ikke være:
echo "$week_day den $day. $month_name $year";
??

$iMonth indeholder månedens nummer, og det er ikke det, der skal udskrives, men i stedet dagens dato.
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