Как использовать JDate

From Joomla! Documentation

This page is a translated version of the page How to use JDate and the translation is 65% complete.

Outdated translations are marked like this.
Other languages:
English • ‎español • ‎français • ‎Nederlands • ‎русский

Introduction

JDate is a helper class, extended from PHP's DateTime class, which allows developers to handle date formatting more efficiently. The class allows developers to format dates for readable strings, MySQL interaction, UNIX timestamp calculation, and also provides helper methods for working in different timezones.

Использование JDate

Создание экземпляра класса JDate

Все вспомогательные методы даты требуют экземпляра класса JDate. Чтобы начать, Вам необходимо его создать. Объект JDate может быть создан двумя образами. Один - это типичный нативный метод простого создания какого-либо нового экземпляра:

$date = new JDate(); // Creates a new JDate object equal to the current time.

Вы также можете создать какой-либо экземпляр, используя определенный в классе JDate статичный метод:

$date = JDate::getInstance(); // Alias of 'new JDate();'

Никакой разницы между этими методами нет, поскольку JDate::getInstance просто создает новый экземпляр класса JDate в точности как показанный первый метод.

Альтернативно, Вы можете просто извлечь текущую дату (как объект класса JDate) из приложения, используя

$date = JFactory::getDate();

Аргументы

Конструктор класса JDate (и статичный метод gedInstance) принимают два опциональных параметра: какую-либо строку даты для форматирования и некоторую часовую зону. Отсутствие передачи какой-либо строки даты создаст некоторый объект класса JDate с текущей датой и временем, в то время как отсутствие передачи некоторой часовой зоны позволит объекту JDate использовать часовую зону, настроенную по умолчанию.

Первый аргумент, если им пользуются, должен быть некоторой строкой, которая может быть получена с помощью нативного конструктора РНР DateTime. Например:

$currentTime = new JDate('now'); // Current date and time
$tomorrowTime = new JDate('now +1 day'); // Current date and time, + 1 day.
$Plus1MonthTime = new JDate('now +1 month'); // Current date and time, + 1 month.
$Plus1YearTime = new JDate('now +1 year'); // Current date and time, + 1 year.
$Plus1YearAnd1MonthTime = new JDate('now +1 year +1 month'); // Current date and time, + 1 year and 1 month.
$PlusTimeToTime = new JDate('now +1 hour +30 minutes +3 seconds'); // Current date and time, + 1 hour, 30 minutes and 3 seconds
$PlusTimeToTime = new JDate('now -1 hour +30 minutes +3 seconds'); // Current date and time, + 1 hour, 30 minutes and 3 seconds
$CombinedTimeToTime = new JDate('now -1 hour -30 minutes 23 seconds'); // Current date and time, - 1 hour, +30 minutes and +23 seconds

$date = new JDate('2012-12-1 15:20:00'); // 3:20 PM, December 1st, 2012

Examples

Temporary example of date formats

JFactory::getDate() gets a JDate object and we then do the JDate toFormat function

JFactory::getDate()->toFormat('%a %d %b %Y - %H:%M')

В API Joomla 3.3 функция "toFormat" была изменена на "format", так что выше приведенный пример должен быть:

JFactory::getDate()->format('%a %d %b %Y - %H:%M')

Function: toISO8601(boolean $local = false) : string

$date = new JDate('2016-01-01 02:00:00'); // A.M. time, in GMT timezone

We set function param before to "false" and after to "true" (user timezone is set to "America/New_York"), we get:

$timezone = new DateTimeZone( JFactory::getUser()->getParam('timezone') );
$date->setTimezone($timezone);
echo $date->toISO8601(false); // 2016-01-01 T 02:00:00 +00:00
echo $date->toISO8601(true); // 2015-12-31 T 21:00:00-05:00 (local time in New York)