2013-10-18 16 views
10

Istnieje prawdopodobnie proste rozwiązanie tego problemu, które spowoduje pojawienie się facepalm. Mam czas zapisany jako ciąg znaków o długości 4 znaków, tj. 1300.Dodawanie znaku w środku ciągu znaków

Próbuję wyświetlić ten ciąg jako 13:00. Czuję, że musi istnieć rozwiązanie tego, które jest bardziej eleganckie niż to, co robię w tej chwili.

Obecnie mam:

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

Ciąg zawsze będzie 4 znaków.

Odpowiedz

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

Edit:

Oto ogólne rozwiązanie tego problemu:

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

Pierwsza opcja Emmy zwraca 1:00 .. – Max

+0

A druga zwraca "50: 0", jeśli $ time = "500"; – Max

+0

należy rozważyć od końca – Max

1
substr_replace($yourVar, ':', -2, 0); 

Uczyni 945 wynik na 9:45 i 1245 w 12:45.

Powiązane problemy