format('Y-m-d H:i:s'); } /** * @param String $dateTimeString * * @return \DateTime */ public static function getCustomDateTimeObject($dateTimeString) { return new \DateTime($dateTimeString, self::getTimeZone()); } /** * Return custom date and time string by timezone settings * * @param String $dateTimeString * * @return string */ public static function getCustomDateTime($dateTimeString) { return self::getCustomDateTimeObject($dateTimeString)->format('Y-m-d H:i:s'); } /** * @param String $dateTimeString * @param int $clientUtcOffset * * @return \DateTime */ public static function getClientUtcCustomDateTimeObject($dateTimeString, $clientUtcOffset) { $clientDateTime = new \DateTime($dateTimeString, new \DateTimeZone('UTC')); if ($clientUtcOffset > 0) { $clientDateTime->modify("+{$clientUtcOffset} minutes"); } elseif ($clientUtcOffset < 0) { $clientDateTime->modify("{$clientUtcOffset} minutes"); } return $clientDateTime; } /** * Return custom date and time string by utc offset * * @param String $dateTimeString * @param int $clientUtcOffset * * @return string */ public static function getClientUtcCustomDateTime($dateTimeString, $clientUtcOffset) { return self::getClientUtcCustomDateTimeObject($dateTimeString, $clientUtcOffset)->format('Y-m-d H:i:s'); } /** * Return now date and time object in UTC * * @return \DateTime */ public static function getNowDateTimeObjectInUtc() { return self::getNowDateTimeObject()->setTimezone(new \DateTimeZone('UTC')); } /** * Return now date and time string in UTC * * @return string */ public static function getNowDateTimeInUtc() { return self::getNowDateTimeObjectInUtc()->format('Y-m-d H:i:s'); } /** * Return custom date and time object in UTC * * @param $dateTimeString * * @return \DateTime */ public static function getCustomDateTimeObjectInUtc($dateTimeString) { return self::getCustomDateTimeObject($dateTimeString)->setTimezone(new \DateTimeZone('UTC')); } /** * Return custom date and time string in UTC * * @param $dateTimeString * * @return string */ public static function getCustomDateTimeInUtc($dateTimeString) { return self::getCustomDateTimeObjectInUtc($dateTimeString)->format('Y-m-d H:i:s'); } /** * Return custom date and time object from UTC * * @param $dateTimeString * * @return \DateTime */ public static function getCustomDateTimeObjectFromUtc($dateTimeString) { return (new \DateTime($dateTimeString, new \DateTimeZone('UTC')))->setTimezone(self::getTimeZone()); } /** * Return custom date and time string from UTC * * @param $dateTimeString * * @return string */ public static function getCustomDateTimeFromUtc($dateTimeString) { return self::getCustomDateTimeObjectFromUtc($dateTimeString)->format('Y-m-d H:i:s'); } /** * Return custom date and time RFC3339 from UTC * * @param string $dateTimeString * * @return string */ public static function getCustomDateTimeRFC3339($dateTimeString) { return self::getCustomDateTimeObjectInUtc($dateTimeString)->format(DATE_RFC3339); } /** * Return now date string by timezone settings * * @return string */ public static function getNowDate() { return self::getNowDateTimeObject()->format('Y-m-d'); } /** * Return now time string by timezone settings * * @return string */ public static function getNowTime() { return self::getNowDateTimeObject()->format('H:i:s'); } /** * Return current Unix timestamp * * @return false|int */ public static function getNowTimestamp() { return strtotime(self::getNowTime()); } /** * Return Day Index for passed date string in 'YYYY-MM-DD' format. * Monday index is 1, Sunday index is 7. * * @param $dateString * * @return int */ public static function getDayIndex($dateString) { return self::getCustomDateTimeObject($dateString)->format('N'); } }