[PHP] strtotime voor Nederlandse data

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 87752

Topicstarter
Ik heb een aantal data met Nederlandse woorden die graag zou omzetten naar een timestamp.
Op het moment hebben ze het formaat 26 november 2008, 15:04. Strtotime herkent alleen Engelse woorden.

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Dan maak je er eerst Engelse benaming van

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

preg_replace(Array("januari", "februari"), Array("january", "february"), $str)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:48

Creepy

Tactical Espionage Splatterer

Dus wat heb je zelf al geprobeerd? Wat lukte daar niet mee? In twee regels aangeven wat je wil en hopen dat wij het voor je gaan fixen is neit de bedoeling. Dus geef eens wat meer info ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Guillome schreef op vrijdag 13 november 2009 @ 16:58:
preg_replace(Array("januari", "februari"), Array("january", "february"), $str)
Gebruik liever str_replace of str_ireplace, zoals de documentatie van PHP ook suggereert:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
Waarbij this function slaat op str_(i)replace.

Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 21:45

Scott

Ik ben, dus ik tweak

Of een mooiere oplossing: zet de locale op Nederlands. Verreweg de simpelste oplossing, alleen welke locale je moet gebruiken hangt van de server af. Voorbeeldje:

PHP:
1
2
3
setlocale(LC_TIME, 'nl_NL');
setlocale(LC_TIME, 'nld_nld'); // Windows
setlocale(LC_TIME, 'nl_NL', 'nld_nld'); // Meerdere is mogelijk, voor het geval de eerste niet herkend wordt

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 23-04 17:14

Johnny

ondergewaardeerde internetguru

Ik heb ooit eens de volgende functies geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
    converts Dutch dates like '27-3-2007' and '27 maart 2007' to unix-timestamp
*/
function nl_strtotime($date) {
    
    if(eregi('^([0-9]{1,2}-[0-9]{1,2}-20[0-9]{2})$', $date) || eregi('^[0-9]{1,2}-[0-9]{4})$', $date)) {
        //format: nn-nn-nnnn or nn-nnnn
        $date = explode('-', $date);
        $date = implode('-', array_reverse($date));
    } else if(eregi('^([0-9]{1,2} [a-zA-Z]{3,9} 20[0-9]{2})$', $date)) {
        //format: nn ssssssssss nnnn

        $date = dateTransToNL($date);
    }

    return strtotime($date);
}


function dateTransToNL($date_str) {

    $nl = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus','september','oktober','november','december','maandag','dinsdag','woendag','donderdag','vrijdag','zaterdag','zondag','vorige','volgende', 'jaren', 'jaar', 'maanden', 'dagen', 'dag', 'uur', 'uren', 'minuten');
    $en = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'next','last', 'years', 'year', 'months', 'days', 'day', 'hour', 'hours', 'minutes');

    return str_replace($nl, $en, $date_str);

}

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

Anoniem: 87752

Topicstarter
Dank! Moet kunnen lukken zo.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 04-04 12:36

NMe

Quia Ego Sic Dico.

Ehm, ik verwacht eigenlijk dat hier een heel ander probleem aan ten grondslag ligt: waarom heb je strings met een datum in Nederlands formaat? Waar haal je die vandaan?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1