persian_date-8.x-4.1/src/Converter/PersianDateFactory.php
src/Converter/PersianDateFactory.php
<?php
/*
* This file is part of the Persian Date (Object Oriented API) package.
*
* (c) Amin Alizade <motammem@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Drupal\persian_date\Converter;
/**
* This class is responsible to build Persian DateTime instances.
*
* @package Drupal\persian_date\Convertor
*/
class PersianDateFactory
{
/**
* Build PersianDateTime instance from given parameters.
*
* @param int $hour
* @param int $minute
* @param int $second
* @param int $month
* @param int $day
* @param int $year
* @param int $is_dst
*
* @return PersianDate
*/
static function buildFromExactDate($hour = null, $minute = null, $second = null, $month = null, $day = null, $year = null, $is_dst = -1)
{
if (!$hour and !$minute and !$second and !$month and !$day and !$year) {
$timestamp = mktime();
} else {
list($gy, $gm, $gd) = PersianDateConverter::jalali_to_gregorian($year, $month, $day);
$timestamp = mktime($hour, $minute, $second, $gm, $gd, $gy);
}
$object = new PersianDate();
$object->setTimestamp($timestamp);
return $object;
}
/**
* Bulid PersianDateTime instance from original PHP DateTime object.
*
* @param \DateTime $dateTime
* @return PersianDate
*/
static function buildFromOriginalDateTime(\DateTime $dateTime)
{
$object = new PersianDate();
$object->setTimezone($dateTime->getTimezone());
$object->setTimestamp($dateTime->getTimestamp());
return $object;
}
/**
* @param integer $timestamp
* @param \DateTimeZone $timezone
* @return PersianDate
*/
public static function buildFromTimestamp($timestamp, \DateTimeZone $timezone = null)
{
$dateTime = new PersianDate();
$dateTime->setTimestamp($timestamp);
if ($timezone) {
$dateTime->setTimezone($timezone);
}
return $dateTime;
}
}