2013-07-09 34 views
4

法國日期我有字符串:解析在PHP

「Lundi將軍,08 JUILLET 2013 09:09」

我如何分析這種類型的字符串?

我嘗試:

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

但它拋出異常

+1

[的strtotime不同的語言?]的可能重複(http://stackoverflow.com/questions/6988536/strtotime-with-different-languages) – Tom

+0

這是否給出了答案你有些輕:http://stackoverflow.com/a/8051979/188331? – Raptor

回答

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)); 
+1

不錯的一個!但是你忘記了$ find數組中的「octobre」:) – Manu

0

你可以使用strftime。如果只有一種語言,並且您在不支持法語的情況下使用共享宿主,則可以使用月份構建一個數組,並用英文版替換它們。

0

試試這個代碼,它先用重要setlocale

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

如果你的格式是固定的,在組合使用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

8

intl擴展可以被用於此:

DateTime
// 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 
+2

值得注意的是'intl'僅適用於PHP> = 5.2,但這絕對是最好的解決方案。 +1 –

+1

這應該成爲答案。 – pinkvoid

0

標準只支持這個名單

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或使用strtotime,而是如果你不能改變JuilletJuly