Parse french date in php

前端 未结 6 1068
南笙
南笙 2021-01-18 09:55

I have string:

\"Lundi, 08 Juillet 2013 09:09\"

How can I parse this type string?

I try:

    $date = \'08 Juillet 2013 09:0         


        
相关标签:
6条回答
  • 2021-01-18 09:56

    The intl extension can be used for this:

    // create formatter
    $fmt = new IntlDateFormatter(
        "fr-FR", 
        IntlDateFormatter::FULL, 
        IntlDateFormatter::FULL, 
        'Etc/UTC', 
        IntlDateFormatter::GREGORIAN, 
        'EEEE, dd MMMM y hh:mm'
    );
    
    // parse
    $ts = $fmt->parse('Lundi, 08 Juillet 2013 09:09');
    echo $ts; // 1373274540
    
    0 讨论(0)
  • 2021-01-18 10:05

    try this code, its important to first use setlocale

     $date = '08 Juillet 2013 09:09';
     setlocale(LC_TIME, 'fr-FR');
     $time = strptime($date, "%d %B %G %H:%M");
     print_r($time);
    
    0 讨论(0)
  • 2021-01-18 10:05

    in DateTime standard only support this list

    http://www.php.net/manual/en/class.datetime.php

    DateTime::ATOM 
    DATE_ATOM
    Atom (example: 2005-08-15T15:52:01+00:00)
    DateTime::COOKIE 
    DATE_COOKIE
    HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)
    DateTime::ISO8601 
    DATE_ISO8601
    ISO-8601 (example: 2005-08-15T15:52:01+0000)
    DateTime::RFC822 
    DATE_RFC822
    RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)
    DateTime::RFC850 
    DATE_RFC850
    RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)
    DateTime::RFC1036 
    DATE_RFC1036
    RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)
    DateTime::RFC1123 
    DATE_RFC1123
    RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)
    DateTime::RFC2822 
    DATE_RFC2822
    RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)
    DateTime::RFC3339 
    DATE_RFC3339
    Same as DATE_ATOM (since PHP 5.1.3)
    DateTime::RSS 
    DATE_RSS
    RSS (Mon, 15 Aug 2005 15:52:01 +0000)
    DateTime::W3C 
    DATE_W3C
    

    it must be 08 July 2013 09:09 instead of 08 Juillet 2013 09:09 or use strtotime instead if you can't change Juillet to July

    0 讨论(0)
  • 2021-01-18 10:08

    You could use strftime. If there's only one language and you use shared hosting where french isn't supported, you could build an array with the months, and replace them with the english version.

    0 讨论(0)
  • 2021-01-18 10:15

    If your format is fixed, use strptime in combination with French locale:

    date_default_timezone_set("UTC");
    setlocale(LC_ALL, 'fr_FR');
    $date = '08 Juillet 2013 09:09';
    $date = strptime($date, '%d %B %Y %H:%M'); 
    var_dump($date);
    

    See strftime for description of format string.

    0 讨论(0)
  • 2021-01-18 10:19
    $date = '08 Juillet 2013 09:09';;
    $find = array('janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
    $replace = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    $date = str_replace($find, $replace, strtolower($date));
    date = date('Y/m/d', strtotime($date));
    
    0 讨论(0)
提交回复
热议问题