【问题标题】:Parse french date in php在php中解析法国日期
【发布时间】:2013-07-09 06:49:23
【问题描述】:

我有字符串:

“隆迪,2013 年 8 月 8 日 09:09”

如何解析这个类型的字符串?

我试试:

    $date = '08 Juillet 2013 09:09';
    $date = new \DateTime($date);

但它会抛出异常

【问题讨论】:

标签: php date


【解决方案1】:

intl 扩展可用于此:

// 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

【讨论】:

  • 值得注意的是,intl 仅适用于 PHP >=5.2,但这绝对是最好的解决方案。 +1
  • 这应该成为答案。
【解决方案2】:
$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));

【讨论】:

  • 不错的一个!但是您在 $find 数组中忘记了“octobre” :)
【解决方案3】:

如果您的格式是固定的,请将strptime 与法语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);

有关format 字符串的描述,请参见strftime

【讨论】:

    【解决方案4】:

    您可以使用strftime。如果只有一种语言并且您使用不支持法语的共享主机,您可以构建一个包含月份的数组,并将它们替换为英文版本。

    【讨论】:

      【解决方案5】:

      试试这段代码,首先使用setlocale很重要

       $date = '08 Juillet 2013 09:09';
       setlocale(LC_TIME, 'fr-FR');
       $time = strptime($date, "%d %B %G %H:%M");
       print_r($time);
      

      【讨论】:

        【解决方案6】:

        DateTime标准中只支持这个列表

        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
        

        它必须是08 July 2013 09:09 而不是08 Juillet 2013 09:09,或者如果您不能将Juillet 更改为July,则使用strtotime 代替

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-04
          • 2015-02-02
          • 1970-01-01
          • 1970-01-01
          • 2014-12-05
          • 1970-01-01
          • 1970-01-01
          • 2021-09-22
          相关资源
          最近更新 更多