Edit
Version 2.4

Práce s datumy – Nette\Utils\DateTime

Nette\Utils\DateTime je statická třída, která rozšiřuje datetime o další užitečné funkce pro práci s časem a datumy.

Všechny příklady předpokládají vytvořený alias:

use Nette\Utils\DateTime;

Pojďme se podívat jak je to snadné.

$netteRelease = DateTime::from('2006-01-23 10:54:00'); // vytvoří DateTime z řetězce
$netteRelease->modify('+10 years, 1 month'); // přičte 10 let a 1 měsíc
echo $netteRelease; // 2016-02-23 10:54:00
$birthday = DateTime::createFromFormat('d.m.Y', '26.02.1994'); // vytvoří DateTime z vlastního formátu
echo $birthday->getTimestamp(); // 762265863

metoda modify je z rodičovské třídy datetime.

from($time)

Vytvoří Nette\Utils\DateTime objekt z řetězce, čísla nebo jiného rozšíření datetime a postará se o nastavení timezone.

DateTime::from(1138013640); // vytvoří DateTime z timestamp
DateTime::from(42); // vytvoří DateTime z aktuálního času a přičte 42 sekund
DateTime::from('1994-02-26 04:15:32'); // vytvoří DateTime z datumu i času
DateTime::from('1994-02-26'); // vytvoří DateTime z datumu a zbytek doplní nulami

createFromFormat($format, $time, $timezone = NULL)

Rozšiřuje metodu from o možnost určit vlastní formát a timezone.

DateTime::createFromFormat('d.m.Y', '26.02.1994'); // vytvoří DateTime z formátu s výchozí timezone
DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // nebo s vlastní timezone
DateTime::createFromFormat('j. n. Y H:i', '8. 9. 2042 16:36'); // jiný příklad

setTimestamp($timestamp)

$created = new DateTime();
$created->setTimestamp(1138013640);

getTimestamp()

$publicDate = DateTime::from('2017-02-03');
$publicDate->getTimestamp(); //1486076400

modifyClone($modify = '')

Vytvoří kopii aniž by ovlivnil aktuální instanci.

$created = DateTime::from('2017-02-03');
$public = $created->modifyClone('+1 day');
echo $created; // 2017-02-03
echo $public; // 2017-02-04

implementuje JsonSerializable

Vrátí řetězec ve standartu ISO 8601, který je používán třeba v JavaScriptu.

$date = DateTime::from('2017-02-03');
echo json_encode($date);