2013-10-18 5 views
10

Es gibt wahrscheinlich eine einfache Lösung, die einen Facepalm verursacht. Ich habe Zeit als 4 Zeichen lange Zeichenfolge dh 1300 gespeichert.Hinzufügen eines Zeichens in der Mitte eines Strings

Ich versuche, diese Zeichenfolge als 13:00 anzuzeigen. Ich habe das Gefühl, dass es eine Lösung dafür geben muss, die eleganter ist als das, was ich gerade mache.

ich derzeit haben:

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

Der String immer lange 4 Zeichen sein.

Antwort

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

Edit:

Hier ist eine allgemeine Lösung für dieses Problem:

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

Emmm erste Option gibt 1:00 .. – Max

+0

zurück und zweite gibt "50: 0" zurück, wenn $ time = "500"; – Max

+0

muss ab Ende – Max

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

Wird 945 Ergebnis in 9.45 und 1.245 in 0.45 machen.