WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   strtotime() fast med svenskt datum [php] (https://www.wn.se/forum/showthread.php?t=1042775)

radioaktivitet 2010-07-04 11:36

strtotime() fast med svenskt datum [php]
 
Hur kan jag konvertera datum som ser ut så här "11 okt 2010 09:26" och "10 juni 2010 05:25" till en unix timestamp? strtotime() fungerar bara med engelska datum. Finns något knep att ta till här?

nosnaj 2010-07-04 12:38

Utan att kolla om det finns någon annan funktion så känns det ju dock väldigt trivialt att byta månadsnamnet till engelska så är du klar. Månaden står alltid efter första mellanslaget.

najk 2010-07-04 12:44

setlocale(LC_ALL, "sv_SE.UTF-8");
sen skriver php datum på svenska

sorry, missuppfattade frågan, håller med nosnaj istället ;)

radioaktivitet 2010-07-04 12:47

Citat:

Ursprungligen postat av nosnaj (Inlägg 20361402)
Utan att kolla om det finns någon annan funktion så känns det ju dock väldigt trivialt att byta månadsnamnet till engelska så är du klar. Månaden står alltid efter första mellanslaget.

Uppfinna hjulet på nytt... Hmm... Det måste ju finnas någon som redan gjort detta? Inte bara bekvämast, utan kodar jag från början finns ju även risk att jag kodar fel.

nosnaj 2010-07-04 13:09

Citat:

Ursprungligen postat av radioaktivitet (Inlägg 20361406)
Uppfinna hjulet på nytt... Hmm... Det måste ju finnas någon som redan gjort detta? Inte bara bekvämast, utan kodar jag från början finns ju även risk att jag kodar fel.

Håller med om hjulet men att lyckas göra fel när man byter ut 12 olika strängar får nog anses som en överdriven risk ;)
Hittar någon bättre sätt, så posta här, bra för oss andra också att veta.

Ristorasto 2010-07-04 14:11

Har en gammal funktion här liggandes som gör det du är ute efter. Bygger iofs precis på samma princip som ovan har tagit upp, men den kanske kan vara till användning ändå (tar inte ansvar för felaktigheter ):

Kod:


/**
 * Returns a string where the monthnames and weekdays has
 * been replaced by a English representation
 * (useful when working with date and time parsing).
 *
 * Checking for Swedish locale words
 *
 * @param string $input
 * @return string
 */
function localize_string($input)
{
        $input = strtolower($input);
               
        $wd = array('onsdag,ons,on' => 'wed',
                                'måndag,mån,må' => 'mon',
                                'tisdag,tis,ti' => 'tue',
                                'torsdag,tor,to' => 'thu',
                                'fr,fre,fredag' => 'fri',
                                'lördag,lör,lö' => 'sat',
                                'söndag,sön,sö' => 'sun');
                               
        $mo = array('januari,jan' => 'jan',
                                'februari,feb' => 'feb',
                                'mars,mar' => 'mar',
                                'april,apr' => 'apr',
                                'maj' => 'may',
                                'juni,jun' => 'jun',
                                'juli,jul' => 'jul',
                                'augusti,aug' => 'aug',
                                'september,sept,sep' => 'sep',
                                'oktober,okt' => 'oct',
                                'november,nov' => 'nov',
                                'december,dec' => 'dec');
                               
        foreach ($mo as $swe => $eng)
                foreach(explode(',', $swe) as $sw)
                        $input = preg_replace('/\b'.$sw.'\b/', $eng, $input);
               
        foreach ($wd as $swe => $eng)
                foreach(explode(',', $swe) as $sw)
                        $input = preg_replace('/\b'.$sw.'\b/', $eng, $input);
                               
        return $input;
}

Lycka till!

tartareandesire 2010-07-04 14:35

Citat:

Ursprungligen postat av radioaktivitet (Inlägg 20361406)
Uppfinna hjulet på nytt... Hmm... Det måste ju finnas någon som redan gjort detta? Inte bara bekvämast, utan kodar jag från början finns ju även risk att jag kodar fel.

Det är så pass simpelt att du knappast lär göra fel :) Även om du skulle göra fel så använder du lämpligtvis en funktion och då behöver du ändå bara ändra på ETT ställe.

Clarence 2010-07-05 21:32

Det finns en smidig funktion för detta:
PHP-kod:

$date '11 okt 2010 09:26';
$format '%d %b %Y %R';
setlocale(LC_ALL"sv_SE.UTF-8");
print_r(strptime($date$format)); 

Med juli som månadsförkortning lär du nog stöta på patrull dock.

martine 2010-07-07 10:14

Man kan ju tillägga, även om det inte hjälper i ditt fall, att MySQL är mycket bra på att hantera datum och teckenkodningar och ofta gör detta mycket smidigare än php.

taz76 2010-07-07 23:03

Jag kan rek att ställa in tidszon också - speciellt om servern inte står i sverige. date_default_timezone_set funkar finfint för det :)


Alla tider är GMT +2. Klockan är nu 14:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson