Avatar billede dennism Nybegynder
28. januar 2011 - 00:26 Der er 7 kommentarer og
1 løsning

PHP: Konvertering af dato

Jeg har en string med en dato, som f.eks. kunne være: Torsdag 27. Januar 2011. Formatet er definedet ved: %A, %d %B %Y.

Hvordan kan jeg konvertere denne string fra dette format til yyyy-mm-dd som er date typen i mySQL.

På forhånd tak for svaret.
Avatar billede repox Seniormester
28. januar 2011 - 09:05 #1
Måske med %Y-%m-%d ?
Dokumentationen er her: http://php.net/strftime
Avatar billede dennism Nybegynder
28. januar 2011 - 10:36 #2
Jeg har prøvet med følgende, men det virker ikke:
echo strftime("%Y-%m-%d", strtotime("Torsdag 27. Januar 2011"));

Det giver mig bare: 1970-01-01.
Avatar billede repox Seniormester
28. januar 2011 - 10:43 #3
Det kan du heller ikke - strtotime() skal bruge nogle specifikke formater, for at kunne forstå hvad du siger til den - dem kan du læse meget mere om her: http://dk2.php.net/manual/en/datetime.formats.php

Dit oprindelige format må jo også komme et sted fra? Hvilket timestamp bruger du til det?
Avatar billede dennism Nybegynder
28. januar 2011 - 10:55 #4
Ja, den er jeg med på - netop derfor jeg oprettede dette spørgsmål.

Strengen kommer fra en JavaScript kalender, så faktum er, at jeg har den streng, som jeg gerne vil konvertere til mysql date typen.
Avatar billede repox Seniormester
28. januar 2011 - 11:03 #5
Så bliver du nød til at selv dele strengen op og parse den derefter - eller lade JavaScriptet generere et timestamp mere til brug for PHP. Den sidste løsning er nok den jeg ville gå efter, men jeg kender ikke lige detaljerne eller omfanget af det du laver...
Avatar billede dennism Nybegynder
28. januar 2011 - 16:02 #6
Tak, jeg fandt en løsning på problemet.

Smider du lige et svar?
Avatar billede repox Seniormester
28. januar 2011 - 16:16 #7
Husk at publicere din løsning - der er måske andre der kan bruge den :)
Avatar billede dennism Nybegynder
28. januar 2011 - 16:29 #8

    function convertStringToDate($string) {
        $months = array(
            'januar'=>1,
            'februar'=>2,
            'marts'=>3,
            'april'=>4,
            'maj'=>5,
            'juni'=>6,
            'juli'=>7,
            'august'=>8,
            'september'=>9,
            'oktober'=>10,
            'november'=>11,
            'december'=>12,
        );
       
        $string = str_replace(".", "", $string);
        $words = explode(' ', strtolower($string));
        $to_keep = array_slice($words, 1);
       
        $month = $to_keep[1];
        if (isset($months[$month]))
            $to_keep[1] = $months[$month];

        $string = implode('-', $to_keep);
        return strftime("%Y-%m-%d", strtotime($string));
    }
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

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