将法语日期字符串转换为日期对象PHP Laravel OctoberCms

时间:2018-04-26 10:20:48

标签: php laravel octobercms

我想将字符串日期转换为对象日期。

字符串日期:

jeu. 26 avril 2018 10:25

到此对象日期

{ ["date"]=> string(26) "2018-04-26 10:34:50.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(12) "Africa/Tunis" }

到目前为止我已经尝试过:

Carbon::createFromFormat("Y-m-d H:i:s", 'jeu. 26 avril 2018 10:25')

我有一个例外:

  

发现意外数据。发现意外数据。分离符号   找不到数据

2 个答案:

答案 0 :(得分:3)

你必须改变格式:

Carbon::createFromFormat("D. d M Y H:i", 'jeu. 26 avril 2018 10:25')

注意:我假设jeu是日期名称。

答案 1 :(得分:0)

您需要设置区域设置和正确的通配符才能读取正确的日期格式

  

使用区域设置时,您可以在此处找到占位符:http://php.net/manual/en/function.strftime.php

此代码应该可以使用

<?php      
// use this only if you working on other locale want to restore OLD locale back
// ====================================
    $oldLocale = setlocale(LC_ALL, 0);
    var_dump(setlocale(LC_ALL, 'fr_FR')); 
// ^ this must return 'fr_FR' then only we confirm locale is set
// if return FALSE then install 'fr_FR' locale for PHP on server 
// ====================================


// day name will be having .(dot) at end according abbreviation 
// lun., mar., mer., jeu., ven., sam., dim.

$timeChunks = strptime('jeu. 26 avril 2018 10:25', '%a %d %b %Y %H:%M');    

// ====================================    
// use this only if you working on other locale want to restore OLD locale 
setlocale(LC_ALL, $oldLocale);
// ====================================

$date = Carbon::create( 
    ($timeChunks['tm_year'] + 1900) , // year
    ($timeChunks['tm_mon'] + 1), // month
    $timeChunks['tm_mday'],  // day
    $timeChunks['tm_hour'],  // hour
    $timeChunks['tm_min'],  // min
    $timeChunks['tm_sec'] // second
);
// tm_year starts from 1900 so we need to add it
// tm_mon is 0 to 11 so add 1

var_dump($date);

如果有任何疑问,请发表评论