2013-07-18 16 views
15

Chcę wysłać wiadomość e-mail z przypomnieniem.Nie chcę używać cron w systemie Linux/Unix/BSD lub Zaplanowane zadania w systemie Windows.Jak odjąć minuty

Próbuję odjąć 15 minut od bieżącego czasu.

tutaj jest mój kod tak daleko (nie działa):

$days = date("j",time()); 
$months = date("n",time()); 
$years = date("Y",time()); 
$hours = date("G",time()); 
$mins = (date("i",time())); 
$secs = date("s",time()); 
$mins = $mins-15; 

Odpowiedz

24

zmienić datę na znacznik czasu (w sekundach), po czym minus 15 minut (w sekund), a następnie przekonwertować z powrotem na datę:

+0

najlepsza odpowiedź mam @ thomas –

4

Jak o odjęcie 15 minut od czasu() przed przekształceniem go?

$time = time() - (15 * 60); 

A następnie użyj $ time zamiast time() w kodzie.

29

Aby odjąć 15 minut od chwili obecnej, można użyć strtotime():

$newTime = strtotime('-15 minutes'); 
echo date('Y-m-d H:i:s', $newTime); 
+3

zdecydowanie doradzamy to rozwiązanie, o wiele bardziej eleganckie i wyraziste. – Andreyco

+0

Awesome! Powinien być zaakceptowany! –

2

Spróbuj użyć

$min = time() - 900; //900 seconds = 15 minutes 
22

Możesz użyć DateInterval

$date = new DateTime(); 
$interval = new DateInterval("PT15M"); 
$interval->invert = 1; 
$date->add($interval); 
echo $date->format("c") . "\n"; 
+1

To powinno być ocenione wyżej, dzięki! – loafer

+1

To rozwiązanie będzie również lepsze, jeśli masz strefę czasową określoną jako część obiektu DateTime. – dchayka

2
$currentTime = date('Y-m-d H:i:s'); 
$before15mins = strtotime('-15 minutes'); 
echo date('Y-m-d H:i:s', $before15mins); 
2

Poniżej sposób można dodać dni/godziny/minuty/sekundy do aktualnego czasu

$addInterval = date('Y-m-d H:i:s', strtotime("+$days days $hours hours $minute minute $sec second", strtotime(currentTime))); 
3

można spróbować to za dobrze,

$dateTimeMinutesAgo = new DateTime("15 minutes ago"); 
$dateTimeMinutesAgo = $dateTimeMinutesAgo->format("Y-m-d H:i:s"); 
+0

Niezwykle proste. Powinna być zaakceptowaną odpowiedzią. – GustavoMP