Avatar billede farhang Nybegynder
24. august 2007 - 15:58 Der er 30 kommentarer

Omskrivning af datetime til dansk format!

Hej,

Jeg vil gerne omskrive følgende datetime record: timeStamp: 2007-08-20 01:35:34 til 20. august 2007 kl. 01:35:34?

Har prøvet uden held.
Avatar billede zurekk Nybegynder
24. august 2007 - 16:10 #1
Jeg tror der findes en funktion der kan gøre det, men ellers kan du vel gøre noget ala.:

$months = array(
            1 => array( 1 => 'Jan', 2 => 'January' ),
            2 => array( 1 => 'Feb', 2 => 'February' ),
            3 => array( 1 => 'Mar', 2 => 'Marts' ),
            4 => array( 1 => 'Apr', 2 => 'April' ),
            5 => array( 1 => 'May', 2 => 'May' ),
            6 => array( 1 => 'Jun', 2 => 'June' ),
            7 => array( 1 => 'Jul', 2 => 'July' ),
            8 => array( 1 => 'Aug', 2 => 'August' ),
            9 => array( 1 => 'Sep', 2 => 'September' ),
            10 => array( 1 => 'Oct', 2 => 'October' ),
            11 => array( 1 => 'Nov', 2 => 'November' ),
            12 => array( 1 => 'Dec', 2 => 'December' )
            );

function dateconv( $date, $months=$months )
    {
        $date = explode( '-', substr( $date, 0, 10 ) );
        $month = intval( $date[1] );
        return $date[2] . '. ' . $months[$date[1]] . ' ' . $date[0] . 'kl. ' . substr( $date, 11 );
    }
Avatar billede olebole Juniormester
24. august 2007 - 16:28 #2
<ole>

zurekk >> Hvis ikke du kan skrive én linje, der giver mening, bør du helt sikkert teste dine koder, før du smider dem op. I dén gang vrøvl skal man godtnok lede grundigt for at finde huller mellem fejlene!

$months = array(
    "januar",
    "februar",
    "marts",
    "april",
    "maj",
    "juni",
    "juli",
    "august",
    "september",
    "oktober",
    "november",
    "december"
);

function dateconv( $date ) {
    global $months;
    $date = explode( " ", $date );
    $aDate = explode("-", $date[0]);
    return $aDate[2].". ".$months[$aDate[1]-1]." ".$aDate[0]." kl. ".$date[1];
}

/mvh
</bole>
Avatar billede zurekk Nybegynder
24. august 2007 - 16:34 #3
Nånå - ingen grund til at blive fjendtlig :)

Kan nu ikke se den store forskel udover at du bruger global, og vælger en ekstra explode fremfor substr() :)
Avatar billede majbom Novice
24. august 2007 - 16:45 #4
hvad med at sætte locale til dansk og bruge strftime?

http://dk.php.net/manual/da/function.strftime.php
Avatar billede olebole Juniormester
24. august 2007 - 16:54 #5
zurekk >> Det er ikke dig, men din kode, jeg kritiserer.

"Kan nu ikke se den store forskel udover at du bruger global, og vælger en ekstra explode fremfor substr()"

- nej, det er jo lige præcis det problem, jeg peger på. Når du ikke kan læse en kode, må du teste den  ;o)

$months[$date[1]] - giver ikke mening, da der ikke returneres en streng, men et array
substr( $date, 11 ); - giver ikke mening, da $date ikke er en streng, men et array

Desuden kan dit $months-array slet ikke bruges indefra funktionen uden 'global $months;'.

Der er gigantiske forskelle på vores to bud - herunder at mit virker  ;o)
Avatar billede zurekk Nybegynder
24. august 2007 - 17:01 #6
Kan man da ikke inkludere et array i en parameter?
Avatar billede olebole Juniormester
24. august 2007 - 17:05 #7
Jo, sagtens ... men det er da vist ikke et problem her
Avatar billede farhang Nybegynder
24. august 2007 - 17:07 #8
Hej Ole,

Skal jeg erstatte $date med $usertimeStamp, som er min record?

Hvordan kan jeg udskrive datoen?
Avatar billede olebole Juniormester
24. august 2007 - 17:10 #9
zurekk >> Hvis det er dette forsøg, du mener:
    $months=$months

- så burde du have tjekket i stedet for at spørge mig nu. Så havde du uden tvivl fået en fejl.
Én ting er, at det ikke er lovligt - men det er kemisk renset for logik og derfor helt åbenlyst ulovligt!

farhang >> Her er et eksempel på brugen:

$months = array(
    "januar",
    "februar",
    "marts",
    "april",
    "maj",
    "juni",
    "juli",
    "august",
    "september",
    "oktober",
    "november",
    "december"
);

function dateconv( $date ) {
    global $months;
    $date = explode( " ", $date );
    $aDate = explode("-", $date[0]);
    return $aDate[2].". ".$months[$aDate[1]-1]." ".$aDate[0]." kl. ".$date[1];
}

print dateconv("2007-08-20 01:35:34");
Avatar billede farhang Nybegynder
24. august 2007 - 17:44 #10
Hej igen,

Du er for cool. ;-)

Hvordan fjerner man sekunderne?
Avatar billede thesurfer Nybegynder
24. august 2007 - 17:49 #11
Muligvis:

function dateconv( $date ) {
    global $months;
    $date = explode( " ", $date );
    $aDate = explode("-", $date[0]);
    $aTime = explode(":", $date[1]);
    return $aDate[2].". ".$months[$aDate[1]-1]." ".$aDate[0]." kl. ".$aTime[0].":".$aTime[1];
}

:-)
Avatar billede olebole Juniormester
24. august 2007 - 17:53 #12
- præcis  ;o)
Avatar billede farhang Nybegynder
24. august 2007 - 19:52 #13
Tusind tak for hjælpen.

Kom med jeres svar.
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:11 #14
olebole er lige smuttet ud (skrev han for lidt siden), så han kan ikke lægge et svar nu.. og han er den der skal have points..

Jeg har bare lavet en meget lille tilføjelse, som han selv ville have lavet i 24/08-2007 17:53:37, hvis jeg gjort det.. så jeg skal ikke have points..

"And the points go to..... olebole".. Oscar-show agtigt.. smil eller lad vær.. :-)
Avatar billede thesurfer Nybegynder
24. august 2007 - 20:12 #15
backspace...backspace...backspace...etc...rettelse..."hvis jeg ikke havde gjort det"...send...

:-)
Avatar billede showsource Seniormester
24. august 2007 - 21:02 #16
Det ligner nu ikke en olebole løsning, med det explode? :O)
substr() skulle vist også være bedre, nu hvor man ved præcis format af streng.


$maaneder = array(
            "Januar",
            "Februar",
            "Marts",
            "April",
            "Maj",
            "Juni",
            "Juli",
            "August",
            "September",
            "Oktober",
            "November",
            "December");

$tid = strtotime("2007-08-20 01:35:34");
$dag = date("d", $tid);
$month = date("m", $tid);

echo $dag .". ". $maaneder[($month-1)] ." ". date("Y k\l. H:i", $tid);
Avatar billede jakobdo Ekspert
24. august 2007 - 21:12 #17
Hvorfor ikke lave:

<?php
//http://www.eksperten.dk/spm/793247
setlocale(LC_TIME, 'da_DK');

$myDate = '2007-08-20 01:35:34';
//20. august 2007 kl. 01:35:34
echo strftime('%e. %B %Y kl. %T',strtotime($myDate));

?>
Avatar billede thesurfer Nybegynder
24. august 2007 - 21:24 #18
Hehe.. spørg olebole.. jeg programmerer ikke i PHP.. :-)
(han gør vist eller noget)
Avatar billede liit42 Nybegynder
24. august 2007 - 22:12 #19
Personligt ville jeg også bruge setlocale og strtotime :-)
Avatar billede olebole Juniormester
24. august 2007 - 22:35 #20
Det kan man absolut også. Det blev faktisk allerede foreslået i (24/08-2007 16:45:26)  =)
Avatar billede thesurfer Nybegynder
24. august 2007 - 22:36 #21
I sover jo i timen alle sammen.. tsk tsk.. ;-)
Avatar billede liit42 Nybegynder
24. august 2007 - 22:41 #22
Det var derfor at jeg skrev "også" :-)
Avatar billede showsource Seniormester
25. august 2007 - 12:57 #23
De gange jeg har rodet med setlocale() har det virket på nogle servere, men ikke på andre.

Så jeg bruger altid noget "mix" for at vise dansk dato
Avatar billede liit42 Nybegynder
25. august 2007 - 13:28 #24
Jeg har aldrig haft problemer med setlocale(), men man kan sikkert sagtens finde webhoteller hvor da_DK fx mangler :-)
Avatar billede olebole Juniormester
25. august 2007 - 15:52 #25
Du er ikke alene, showsource  =)
Avatar billede olebole Juniormester
25. august 2007 - 15:55 #26
- dens virkemåde er platformsafhængig og er derfor noget rod at bruge, hvis portabillitet er interessant ... og hvornår er det ikke tilfældet?  ;o)
Avatar billede liit42 Nybegynder
25. august 2007 - 16:18 #27
Godt ord igen Ole :-)

Det gør bare ondt i mine øjne når jeg ser et array med månedsnavne, men det er nok fordi jeg kun arbejder på dejlige linuxboxe, at jeg aldrig har haft problemer med setlocale :-)
Avatar billede olebole Juniormester
25. august 2007 - 17:22 #28
Uanset hvilken browser jeg bruger, skriver jeg X-browser kode - for jeg kan jo ikke vide, hvilken browser min bruger anvender.

Uanset, hvilet styresystem min egen server kører med, skriver jeg platformsuafhængig kode - for jeg kan jo ikke vide, om min bruger senere ønsker at skifte udbyder (og dermed måske også styresystem).
Avatar billede liit42 Nybegynder
25. august 2007 - 18:09 #29
Og det er den helt rigtige holdning at have Ole :-)
Avatar billede majbom Novice
21. januar 2009 - 10:03 #30
farhang?
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