Php 将法语格式的日期转换为mysql日期时间格式

Php 将法语格式的日期转换为mysql日期时间格式,php,datetime,date,Php,Datetime,Date,我想将法语格式的日期(2011年11月8日06:00)转换为日期时间格式(2011-11-08 06:00) 我可以用一个小功能将日期时间转换为法语格式的日期: function dateFR($datetime) { setlocale(LC_ALL, 'fr_FR'); return strftime('%d %B %Y à %Hh%M', strtotime($datetime)); } 但我不知道如何做相反的事情 谢谢你的帮助。怎么样 date("

我想将法语格式的日期(2011年11月8日06:00)转换为日期时间格式(2011-11-08 06:00)

我可以用一个小功能将日期时间转换为法语格式的日期:

function dateFR($datetime) {
    setlocale(LC_ALL, 'fr_FR');
    return strftime('%d %B %Y à %Hh%M', strtotime($datetime));
}
但我不知道如何做相反的事情

谢谢你的帮助。

怎么样

date("Y-m-d H:i:s", strtotime($datetime));
啊,是的,我看到问题了
strotime
仅转换英文文本(强调):

函数期望得到一个包含英语日期格式的字符串,并尝试将该格式解析为Unix时间戳


您最好的选择可能是将特定格式的
preg_match
,因为似乎没有任何特定于语言环境的函数可以转换月份名称之类的内容。

我写这篇文章是为了将日/月/年的法语日期转换为英语格式,并将其转换为MYSQL旁边的格式。假设原始日期以“/”斜杠分隔


这是非常基本的,如果缺少像day这样的数字,就会发出警告

如果您有我制作的数组或多数组函数,只需将所有日期输入以name=“date\uu…”开头即可


}

我知道这个问题很长时间了,但由于我刚刚遇到了同样的问题,我提出了以下解决方案:

DateTime::createFromFormat('d/m/Y H:i',$datetime)->format('Y-m-d H:i')
但是PHP5.3是必需的。 有关

的详细信息,请尝试以下代码:

function frToEn($date){
/* this function Convert a date in french format to english format
** EXP : 
**  French date  : 20-juin-2019
**  English date :  20-jun-2019
*/
$month=substr($s1=substr($date,strpos($date,'-')+1) , 0 , -(strlen($s1)-strpos($s1,"-")));
$year=substr($s1,strpos($s1,'-')+1);
$day=substr($date,0,strpos($date,'-'));

switch ($month) {
    case 'janvier': 
    case 'janv': 
    case 'jan':
        return $day."-jan-".$year;
        break;
    case 'février' :
    case'févr' :
    case'fév':
        return $day."-feb-".$year;
        break;
    case 'mars' :
    case'mar':
        return $day."-mar-".$year;
        break;
    case 'avril' :
    case'avr':
        return $day."-apr-".$year;
        break;
    case 'mai':
        return $day."-may-".$year;
        break;
    case 'juin':
        return $day."-jun-".$year;
        break;
    case 'juillet' :
    case'juil':
        return $day."-jul-".$year;
        break;
    case 'aout' :
    case'août':
        return $day."-aug-".$year;
        break;
    case 'septembre' :
    case'sept' :
    case'sep':
        return $day."-sep-".$year;
        break;
    case 'octobre' :
    case'oct':
        return $day."-oct-".$year;
        break;
    case 'novembre' :
    case'nov':
        return $day."-nov-".$year;
        break;
    case 'décembre' :
    case'déc':
        return $day."-dec-".$year;
        break;

    default:
        return false;
        break;
}}
对于mysql格式,请使用以下函数:

date('Y-m-d',strtotime(frToEn($date))

我可以马上想出十几种方法来实现这一点——使用preg_match、explode、date、foreach等。这对你来说是一个很好的实践,你可以自己解决这个问题,听起来你对编程的经验非常少。感谢你的回答Benubard和例子。谢谢你的测试,我已经试过了,但是没有用:(结果总是:1970-01-01:00@benostrototime($datetime)的返回值是多少?当我这样做时,结果值是1970-01-01 01:00:$date\u fr=“08 novenbre 2011á06h00”$datetime=date(“Y-m-d H:I”,strotime($date\u fr));echo“datetime:”.$datetime.“
“好的,我明白了,谢谢。因此,在使用strotime之前,我将尝试先用preg_match将我的特定日期格式转换为英语日期格式。这不是答案。谢谢分享Xjet。
function frToEn($date){
/* this function Convert a date in french format to english format
** EXP : 
**  French date  : 20-juin-2019
**  English date :  20-jun-2019
*/
$month=substr($s1=substr($date,strpos($date,'-')+1) , 0 , -(strlen($s1)-strpos($s1,"-")));
$year=substr($s1,strpos($s1,'-')+1);
$day=substr($date,0,strpos($date,'-'));

switch ($month) {
    case 'janvier': 
    case 'janv': 
    case 'jan':
        return $day."-jan-".$year;
        break;
    case 'février' :
    case'févr' :
    case'fév':
        return $day."-feb-".$year;
        break;
    case 'mars' :
    case'mar':
        return $day."-mar-".$year;
        break;
    case 'avril' :
    case'avr':
        return $day."-apr-".$year;
        break;
    case 'mai':
        return $day."-may-".$year;
        break;
    case 'juin':
        return $day."-jun-".$year;
        break;
    case 'juillet' :
    case'juil':
        return $day."-jul-".$year;
        break;
    case 'aout' :
    case'août':
        return $day."-aug-".$year;
        break;
    case 'septembre' :
    case'sept' :
    case'sep':
        return $day."-sep-".$year;
        break;
    case 'octobre' :
    case'oct':
        return $day."-oct-".$year;
        break;
    case 'novembre' :
    case'nov':
        return $day."-nov-".$year;
        break;
    case 'décembre' :
    case'déc':
        return $day."-dec-".$year;
        break;

    default:
        return false;
        break;
}}
date('Y-m-d',strtotime(frToEn($date))