Преобразование строки даты с другого языка в метку времени в PHP

Например, у меня есть эта строка даты на голландском языке:

wo, 14 mei 2014 09:42:16

Можно ли преобразовать его в временную метку? Я думал об использовании голландского языка в mktime(), но это, конечно, возвращает FALSE.


person Sinan Samet    schedule 14.05.2014    source источник
comment
Это всегда голландский или может быть любой другой язык?   -  person Mikk3lRo    schedule 14.05.2014
comment
stackoverflow.com/questions/8309865/ просто сделайте это по-другому.   -  person Alireza Balouch    schedule 14.05.2014


Ответы (3)


Я бы предположил http://php.net/manual/en/function.strptime.php или http://php.net/manual/en/function.date-parse-from-format.php (для php > 5.3) в сочетании с setlocale решит проблему.

person Mikk3lRo    schedule 14.05.2014

Вы можете использовать регулярные выражения для поиска ваших данных. Например :

$day = preg_replace('/^[a-zA-Z], (\d{1,2}) .$/', '$1', $date);
$year = preg_replace('/^[a-zA-Z]+, \d{1,2} [a-zA-Z]+ (\d{4}) .$/', '$1', $date);
$hour = preg_replace('/^[a-zA-Z]+, \d{1,2} [a-zA-Z]+ \d{4} (\d{2}):.$/', '$1', $date);
$minutes = preg_replace('/^[a-zA-Z]+, \d{1,2} [a-zA-Z]+ \d{4} \d{2}:(\d{2}):.$/', '$1', $date);
$seconds = preg_replace('/^[a-zA-Z]+, \d{1,2} [a-zA-Z]+ \d{4} \d{2}:\d{2}:(\d{2})$/', '$1', $date);

Для месяца вы можете получить название месяца, а затем использовать таблицу поиска.

Чтобы поиграть с регулярными выражениями: Debuggex

Редактировать:

Здесь вы можете получить все свои данные в одну строку:

$date = json_decode(preg_replace(
    '/^([a-zA-Z]+), (\d{1,2}) ([a-zA-Z]+) (\d{4}) (\d{2}):(\d{2}):(\d{2})$/',
    '{"day":"$2","month":"$3","year":"$4","hour":"$5","minutes":"$6","seconds":"$7"}',
    $text_date);

Вот пример: http://sandbox.onlinephpfunctions.com/code/2e976e3813945877a8d096f42d089130e4ec

person AMDG    schedule 14.05.2014

Используя источники, которые рекомендовал Mikk3lRo, я пришел к следующему решению:

    setlocale(LC_TIME, 'nl_NL');
    $format = '%a, %d %B %Y %H:%M:%S';
    $strf = 'wo, 14 mei 2014 09:42:16';

    $a = strptime($strf, $format);
    $timestamp = mktime($a['tm_hour']+2, $a['tm_min'], $a['tm_sec'], $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
    echo $timestamp;
person Sinan Samet    schedule 14.05.2014