2013-10-18 18 views
10

C'è probabilmente una semplice soluzione a questo che causerà un facepalm. Ho il tempo memorizzato come una stringa lunga 4 caratteri cioè 1300.L'aggiunta di un personaggio nel bel mezzo di una stringa

sto cercando di visualizzare quella stringa come 13:00. Mi sento come se ci dovesse essere una soluzione a questo che è più elegante di quello che sto facendo in questo momento.

Al momento ho:

$startTime = get_field($dayStart, $post->ID); 
$endTime = get_field($dayEnd, $post->ID); 

     for ($x=0; $x = 4; $x++){ 

      if(x == 2){ 
       $ST .= ':'; 
       $ET .= ':'; 
      } else { 
       $ST .= $startTime[x]; 
       $ET .= $endTime[x]; 
      } 

     } 

$startTime = $ST; 
$endTime = $ET; 

La stringa sarà sempre 4 caratteri.

risposta

13
$time = "1300";  
$time = substr($time,0,2).':'.substr($time,2,2); 

Edit:

Ecco una soluzione generale a questo problema:

function insertAtPosition($string, $insert, $position) { 
    return implode($insert, str_split($string, $position)); 
} 
+1

Emmm prima opzione torna 01:00 .. – Max

+0

e il secondo restituisce "50: 0" se $ time = "500"; – Max

+0

deve essere considerato dalla fine di – Max

6
implode(":",str_split($time,2)); 
1
substr_replace($yourVar, ':', -2, 0); 

farà 945 risultato in 09:45 e 1245 in 00:45.

Problemi correlati