2016-02-08 1 views
-2

J'ai différents types de chaînes de date, des exemples sont donnés ci-dessous. Comment puis-je convertir ces chaînes en date de l'heure en PHP. Pourriez-vous s'il vous plaît m'aider à résoudre ce problème?Comment faire pour convertir la chaîne ci-dessous à l'heure de la date

exemples:

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 

j'avais essayé un code, mais le résultat est faux.

<?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

forte? Et aussi, Convertir en date-heure à partir de la chaîne a été demandé de nombreuses fois ici. Avez-vous déjà essayé de googler le premier? – NSNoob

+1

Copie possible de [PHP: convertir le format de date peu commun en horodatage de la manière la plus efficace possible?] (Http://stackoverflow.com/questions/4843423/php-convert-uncommon-date-format-to-timestamp-in-most -efficient-manière-possible) – NSNoob

+0

sam sam essayer de google 'convertir chaîne en php date time' et vous obtiendrez beaucoup de code de travail –

Répondre

0

J'ai utilisé la méthode ci-dessous et j'ai obtenu la réponse.

$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;     
} 

réponse est:

2009-8-31 10:12 
2009-8-31 9:08 
2009-9-1 10:20 
2009-9-2 9:45