Конвертировать французскую дату Строка в дату Объект PHP Laravel OctoberCms - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы преобразовать строковую дату в дату объекта.

Дата строки:

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 голосов
/ 26 апреля 2018

Вам нужно установить локаль и соответствующие символы подстановки, чтобы прочитать правильный формат даты

Здесь вы можете найти заполнитель при работе с локалью: 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);

если есть сомнения, пожалуйста, прокомментируйте

0 голосов
/ 26 апреля 2018

вам нужно изменить формат:

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

Примечание: я предполагаю, что jeu - это название дня.

...