Datum a čas

Nette\Utils\DateTime je třída, která rozšiřuje nativní 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.

DateTime::from(string|int|\DateTimeInterface $time): DateTime

Vytvoří Nette\Utils\DateTime objekt z řetězce, čísla nebo jiného objektu 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

DateTime::createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false

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(int|string $timestamp): static

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

getTimestamp(): int|string

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

modifyClone(string $modify=''): static

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