[PHP] Jak w prosty sposób dodać dni, godziny, minuty, sekundy do jakiejś daty ?

Programowanie
[PHP] Jak w prosty sposób dodać dni, godziny, minuty, sekundy do jakiejś daty ?

PHP udostępnia prosty mechanizm operacji na dacie i czasie co sprawia, że dodawanie dni, godzin, minut oraz sekund jest bardzo proste. Do tego celu wykorzystamy funkcję date, do której przekażemy znacznik czasu zwrócony z funkcji strtotime.

Funkcja strtotime zwraca znacznik czasu na podstawie ciągu znaków, którym może być data zapisana w jakimś formacie np.

// przykładowa data
$start = '2017-02-08 12:00:00';

// konwersja daty z ciągu znaków na znacznik czasu
$ts = strtotime($start);

// sprawdzamy czy konwersja jest poprawna
if (date('Y-m-d H:i:s', $ts) != $start)
    throw new Exception('Błąd konwersji');

echo $ts; // 1486573200

Jednak funkcja ta potrafi także dokonać operacji na dacie i czasie przyjmując jako ciąg znaków informację jaką operację na znaczniku czasu ma wykonać np.

  • +1 day = dodaje 1 dzień
  • +1 hour = dodaje 1 godzinę
  • +1 minutes = dodaje 1 minutę
  • +1 seconds = dodaje 1 sekundę

Teraz wiedząc jakie zapisy są dozwolone możemy dokonywać w prosty sposób operacji dodawania / odejmowania czasu. Przy czym powyższe zapisy operują na bieżącym czasie jeśli nie przekażemy jako drugi parametr znacznika czasu na którym chcemy operować.

Uwaga! Należy pamiętać jednaj bardzo ważnej rzeczy, mianowicie należy ustawić strefę czasową na ‚GMT’ jest to związane z faktem, że w naszej strefie czasowej mamy zminę czasu co może wpłynąć na wynik działania funkcji.


date_default_timezone_set('GMT');

// przykładowa data
$start = '2017-02-08 12:00:00';

// konwersja daty z ciągu znaków na znacznik czasu
$ts = strtotime($start);

// sprawdzamy czy konwersja jest poprawna
if (date('Y-m-d H:i:s', $ts) != $start)
    throw new Exception('Błąd konwersji');


echo date('Y-m-d H:i', strtotime('+2 hour +30 minutes', $ts)); // 2017-02-08 14:30