2013-06-10 11 views
5

Muszę dodać 15 minut do bieżącego czasu. Na przykład: teraz jest 20:48, trzeba dodać 15 minut, więc teraz będzie 21:03, ale muszę ustawić 21:15, to znaczy, że powinien być wielokrotnością 15,30,45,00. Pomoc/wskazówki mogą być pomocne.Dodaj 15 minut do bieżącego czasu i przystawaj do 15-minutowych przerw.

<?php 
$current_date_time = date('d/m/Y H:i:s'); 
$current_date = date("d/m/Y H:i", strtotime($current_date_time."+15 minutes")); 
echo $current_date;exit; 
+2

http://php.net/manual/en/datetime.add.php – ChrisW

+0

20:48 -> 21:03 -> 21:15? – Raptor

+0

@deceze: czy przeczytałeś tytuł ?? !! ;-P (odpowiedź na http://stackoverflow.com/questions/17022361/need-to-add-15-mintues-to-current-time#comment24601935_17022450) – zerkms

Odpowiedz

15

Oto prosty przykład

//what time is it? 
$t=time(); 

//how long is our interval? 
$interval=15*60; 

//we can calculate when the last interval started by subtracting $t % $interval 
$last = $t - $t % $interval; 

//so now we know when the next interval will start... 
$next = $last + $interval; 

echo "Next interval at ".strftime('%H:%M:%S', $next)."\n"; 

Wyglądasz warto dodać 2 * $ interwał do ostatniego przedziału, ale powinieneś być w stanie dostosować się do tego pasuje.

+7

OMG ktoś czyta pytanie. Wezwać doktora! – PeeHaa

+1

Co za fantastyczne rozwiązanie! – Dale

+0

Dziękuję bardzo :) – Vimalnath

2

Wystarczy, aby poprawić mój post:

$time = time(); 
    $last_time = ($time - ($time % (15 * 60))); 
    $in15mins = $last_time+ (15 * 60); 
    echo 'Now:  '. date('Y-m-d H:i') ."\n"; 
    echo 'in 15 mins: '. date('Y-m-d H:i', $in15mins) ."\n"; 

myślę, że jest całkiem samodzielnego wyjaśniania. Zoptymalizuj go, użyj go.

+0

to jest wadliwe, zastanów się, co się stanie, jeśli dwa wywołania time() zwraca różne wyniki. –

+0

Naprawiono. Dzięki za podpowiedź :) –

+0

co z powrotem na dół? :) –

1
$current_date_time = date('d/m/Y H:i:s'); 
echo $current_date_time."<br>"; 
$current_date = date("d/m/Y H:i", strtotime($current_date_time."+15 minutes")); 
echo $current_date."<br>"; 
$minutes = date("i",strtotime($current_date)); 
$min = ''; 
if($minutes > 0 && $minutes <15){ 
    $min = 15 - $minutes; 
} else if($minutes > 15 && $minutes <30){ 
     $min = 30 - $minutes; 
} else if($minutes > 30 && $minutes <45){ 
     $min = 45 - $minutes; 
} else { 
     $min = 59 - $minutes; 
     $min++; 
} 

$newdate = date("d/m/Y H:i", strtotime($current_date."+".$min." minutes")); 

echo $newdate; 

Użyj powyższego kodu. to działa dla mnie.

0
$currentTimeStamp=strtotime('now'); 
$nextInterval=date("Y-m-d H:i", strtotime("+15 minutes", $currentTimeStamp)); 
dump($nextInterval); 
+0

Witamy w Stack Overflow! Ten fragment kodu może rozwiązać problem, ale nie wyjaśnia, dlaczego i w jaki sposób odpowiada na pytanie. Proszę [załączyć wyjaśnienie swojego kodu] (// meta.stackexchange.com/q/114762/269535), ponieważ to naprawdę pomaga poprawić jakość twojego posta. Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. ** Oznaczniki/recenzenci: ** [tylko dla odpowiedzi typu "tylko hasło", nie usuwaj!] (// meta.stackoverflow.com/a/260413/2747593) –

Powiązane problemy