/** * Создает объект класса Time_DateTime * * Момент времени может быть задан различными способами: * - в виде числа -- в этом случае число является значением UNIX timestamp; * - в виде строки -- в этом случае делается попытка разбора строки и создания * соответствущего объекта; * - в виде объекта класса Time.DateTime -- в этом случае метод просто возвращает этот объект. * * Парсинг строки выполняется с помощью метода Time.DateTime::parse() без указания * формата, что, в свою очередь, приводит к вызову встроенной функции {@link http://php.ru/manual/function.strtotime.html strtotime()}. * * @see Time_DateTime::parse() * * @params integer|string|object $timestamp Момент времени * * @return Time_DateTime */ public static function DateTime($timestamp = null) { if (is_null($timestamp)) { return new Time_DateTime(); } switch (true) { case $timestamp instanceof Time_DateTime: return clone $timestamp; case !is_object($timestamp) && (string) (int) $timestamp === (string) $timestamp: $date = new Time_DateTime("@{$timestamp}"); $date->setTimezone(new DateTimeZone(date_default_timezone_get())); return $date; default: return Time_DateTime::parse((string) $timestamp); } }