|
| 1 | +Práce s datumy - Nette\Utils\DateTime |
| 2 | +************************************* |
| 3 | + |
| 4 | +.[perex] |
| 5 | +[Nette\Utils\DateTime |api:] je statická třída, která rozšiřuje [php:datetime] o další užitečné funkce pro práci s časem a datumy. |
| 6 | + |
| 7 | +Všechny příklady předpokládají vytvořený alias: |
| 8 | + |
| 9 | +/--php |
| 10 | +use Nette\Utils\DateTime; |
| 11 | +\-- |
| 12 | + |
| 13 | +Pojďme se podívat jak je to snadné. |
| 14 | + |
| 15 | +/--php |
| 16 | +$netteRelease = DateTime::from('2006-01-23 10:54:00'); // vytvoří DateTime z řetězce |
| 17 | +$netteRelease->modify('+10 years, 1 month'); // přičte 10 let a 1 měsíc |
| 18 | +echo $netteRelease; // 2016-02-23 10:54:00 |
| 19 | +\-- |
| 20 | + |
| 21 | +/--php |
| 22 | +$birthday = DateTime::createFromFormat('d.m.Y', '26.02.1994'); // vytvoří DateTime z vlastního formátu |
| 23 | +echo $birthday->getTimestamp(); // 762265863 |
| 24 | +\-- |
| 25 | + |
| 26 | +.[note] |
| 27 | +metoda modify je z rodičovské třídy [php:datetime]. |
| 28 | + |
| 29 | +from($time) |
| 30 | +---------- |
| 31 | +Vytvoří [Nette\Utils\DateTime |api:] objekt z řetězce, čísla nebo jiného rozšíření [php:datetime] a postará se o nastavení timezone. |
| 32 | + |
| 33 | +/--php |
| 34 | +DateTime::from(1138013640); // vytvoří DateTime z timestamp |
| 35 | +DateTime::from(42); // vytvoří DateTime z aktuálního času a přičte 42 sekund |
| 36 | +DateTime::from('1994-02-26 04:15:32'); // vytvoří DateTime z datumu i času |
| 37 | +DateTime::from('1994-02-26'); // vytvoří DateTime z datumu a zbytek doplní nulami |
| 38 | +\-- |
| 39 | + |
| 40 | +createFromFormat($format, $time, $timezone = NULL) |
| 41 | +-------------------------------------------------- |
| 42 | +Rozšiřuje metodu //from// o možnost určit vlastní formát a timezone. |
| 43 | +/--php |
| 44 | +DateTime::createFromFormat('d.m.Y', '26.02.1994'); // vytvoří DateTime z formátu s výchozí timezone |
| 45 | +DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // nebo s vlastní timezone |
| 46 | +DateTime::createFromFormat('j. n. Y H:i', '8. 9. 2042 16:36'); // jiný příklad |
| 47 | +\-- |
| 48 | + |
| 49 | +setTimestamp($timestamp) |
| 50 | +------------------------ |
| 51 | +/--php |
| 52 | +$created = new DateTime(); |
| 53 | +$created->setTimestamp(1138013640); |
| 54 | +\-- |
| 55 | + |
| 56 | +getTimestamp() |
| 57 | +-------------- |
| 58 | +/--php |
| 59 | +$publicDate = DateTime::from('2017-02-03'); |
| 60 | +$publicDate->getTimestamp(); //1486076400 |
| 61 | +\-- |
| 62 | + |
| 63 | +modifyClone($modify = '') |
| 64 | +------------------------- |
| 65 | +Vytvoří kopii aniž by ovlivnil aktuální instanci. |
| 66 | +/--php |
| 67 | +$created = DateTime::from('2017-02-03'); |
| 68 | +$public = $created->modifyClone('+1 day'); |
| 69 | +echo $created; // 2017-02-03 |
| 70 | +echo $public; // 2017-02-04 |
| 71 | +\-- |
| 72 | + |
| 73 | +jsonSerialize() |
| 74 | +--------------- |
| 75 | +Vrátí řetězec ve standartu ISO 8601, který je používán třeba v JavaScriptu. |
| 76 | +/--php |
| 77 | +$iso = DateTime::from('2017-02-03'); |
| 78 | +echo $iso->jsonSerialize(); |
| 79 | +\-- |
0 commit comments