2016-02-08 7 views
-2

У меня разные типы строк даты, примеры приведены ниже. Как преобразовать эти строки в дату на PHP. Не могли бы вы помочь мне решить эту проблему?Как преобразовать нижнюю строку в дату

примеры:

1: 10:12 am ETAug 31, 2009 
2: August 31, 2009, 9:08 AM ET 
3: Sept. 1, 2009 10:20 a.m. ET 
4: 9:45 am ETSep 2, 2009 

я попробовал некоторый код, но результат не так.

<?php 
date      = 'Aug. 28, 2009 10:26 a.m. ET'; 
$remove[] = "'"; 
$remove[] = '.'; 
$remove[] = ','; 
$remove[] = 'am'; 
$remove[] = 'ET'; 
$replace = str_replace($remove, '', $date); 
$space[] = ' '; 
$datetime = str_replace($space, '-', $replace); 
echo $datetime . '<br>'; 
$date      = date_create_from_format('F-d-Y', $datetime); 
echo "Format:" . $date->format('Y-m-d') . "\n"; 
?> 
+3

Strong? Кроме того, здесь неоднократно задавалось преобразование в Date-time from string. Вы даже пробовали его сначала? – NSNoob

+1

Возможный дубликат [PHP: конвертировать необычный формат даты в метку времени наиболее эффективным способом?] (Http://stackoverflow.com/questions/4843423/php-convert-uncommon-date-format-to-timestamp-inmost -эффективный-возможный способ) – NSNoob

+0

sam sam попробуйте google 'convert string в php date time', и вы получите много рабочего кода –

ответ

0

Я использовал ниже метод, и я получил ответ.

$replacechar  = str_replace($remove, '', $date); 
$space[]   = ' '; 
$replacespace  = str_replace($space, '-', trim($replacechar)); 
$explodeDate  = explode('-', $replacespace); 
$datetimeexplode = $explodeDate[0].'-'.$explodeDate[1].'-'.$explodeDate[2].' '.$explodeDate[3]; 
if(strstr($explodeDate[3], ":")){ 
    $date_time  = date_create_from_format('F-d-Y H:i', $datetimeexplode); 
    $dateTimeReplace = $date_time->format('Y-m-d H:i'); 
    echo $dateTimeReplace; 
} 
$datetimeexplodesecond = $explodeDate[2].'-'.$explodeDate[3].'-'.$explodeDate[4].' '.$explodeDate[0]; 
if(strstr($explodeDate[0], ":")){ 
    $date_time  = date_create_from_format('F-d-Y H:i', $datetimeexplodesecond); 
    $dateTimeReplace = $date_time->format('Y-m-d H:i'); 
    echo $dateTimeReplace;     
} 

Ответ:

2009-8-31 10:12 
2009-8-31 9:08 
2009-9-1 10:20 
2009-9-2 9:45 
Смежные вопросы