2017-10-19 7 views
0

J'ai une chaîne qui obtient le dateTime en tant que groupe à partir de la base de données, donc j'obtenir quelque chose comme çaObtenir le temps que d'une chaîne de plus d'un dateTime

2017-10-20 05:00:00,2017-10-20 09:00:00,2017-10-20 07:00:00,2017-10-20 13:30:00,2017-10-20 16:00:00,2017-10-20 13:00:00,2017-10-20 06:00:00,2017-10-20 09:30:00,2017-10-20 10:30:00,2017-10-20 15:30:00,2017-10-20 17:00:00 

Notez que toutes les dates sont les même, c.-à-d. 2017-10-20. Puisque je n'ai pas besoin de m'inquiéter des dates différentes. Tout ce que je veux est d'extraire simplement le temps de cette chaîne, et l'imprimer bien comme ça

05:00, 09:00, 07:00, 13:30, 16:00 //and so on 

Je ne veux pas que les secondes, il serait inutile.

J'ai essayé d'utiliser la fonction strtotime() de PHP mais elle échoue et donne 00:00:00 à la place.

Des idées? J'utilise Laravel comme moteur de template.

+0

obtenez-vous ces résultats littéralement, comme une seule chaîne, ou vous dénotant les éléments du tableau avec vos virgules? – George

+1

Je ferais probablement juste un 'str_replace ('2017-10-20', '', [YOURSTRING]);' – kerbholz

+0

@kerbholz la date ne sera pas codée en dur, j'obtiendrai différentes dates comme résultat de base de données. – zuif

Répondre

6

Faites-le dans votre instruction SQL.

SELECT TIME_FORMAT(`dateColumn`, '%H:%i') FROM ... 
0
<?php 
$tGroup = "2017-10-20 05:00:00,2017-10-20 09:00:00,2017-10-20 07:00:00,2017-10-20 13:30:00,2017-10-20 16:00:00,2017-10-20 13:00:00,2017-10-20 06:00:00,2017-10-20 09:30:00,2017-10-20 10:30:00,2017-10-20 15:30:00,2017-10-20 17:00:00"; 

$retVal = ""; 
$dates = explode(",", $tGroup); 
foreach ($dates as $date) { 
    $time = date('H:i', strtotime($date)); 

    // use this if you want to print AM/PM format 
    //$time = date('h:i A', strtotime($date)); 

    $retVal .= $time . ", "; 
} 
echo trim($retVal," ,"); 
1

étape par étape:

$dateTimes = '2017-10-20 05:00:00,2017-10-20 09:00:00,2017-10-20 07:00:00,2017-10-20 13:30:00,2017-10-20 16:00:00,2017-10-20 13:00:00,2017-10-20 06:00:00,2017-10-20 09:30:00,2017-10-20 10:30:00,2017-10-20 15:30:00,2017-10-20 17:00:00'; 
$dateTimesArray = explode(',', $dateTimes); 
$timesArray = []; 
foreach($dateTimesArray as $dateTime) { 
    $timesArray[] = date('H:i', strtotime($dateTime)); 
} 
$times = join(',', $timesArray);