%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/DateHelper.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2017 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\libs;
use DateTimeZone;
use Yii;
/**
* Utility class for date issues
*
* @see \yii\validators\DateValidator
* @author buddha
*/
class DateHelper
{
const DB_DATE_FORMAT = 'Y-m-d H:i:s';
const DB_DATE_FORMAT_PHP = 'php:Y-m-d H:i:s';
const REGEX_DBFORMAT_DATE = '/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/';
const REGEX_DBFORMAT_DATETIME = '/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (\d{2}):(\d{2}):(\d{2})$/';
/**
* Returns the user timeZone or app timezone as fallback.
*
* @return DateTimeZone|string
* @since v1.4
*/
public static function getUserTimeZone($asString = false)
{
$tz = Yii::$app->user->isGuest
? Yii::$app->timeZone
: Yii::$app->user->getTimeZone();
if(!$tz) {
$tz = Yii::$app->timeZone;
}
return $asString ? $tz : new DateTimeZone($tz);
}
/**
* @param bool $asString
* @return DateTimeZone|string
* @since v1.4
*/
public static function getSystemTimeZone($asString = false)
{
return $asString ? Yii::$app->timeZone : new DateTimeZone(Yii::$app->timeZone);
}
/**
* Checks whether the given value is a db date format or not.
*
* If $dateOnly flag is set to true this method tests against date format without time, otherwise it will test against
* the db datetime format.
*
* @param string $value the date value
* @param bool $dateOnly
* @return boolean
* @since v1.4
*/
public static function isInDbFormat($value, $dateOnly = false)
{
return (boolean) ($dateOnly ? preg_match(self::REGEX_DBFORMAT_DATE, $value) : preg_match(self::REGEX_DBFORMAT_DATETIME, $value));
}
/**
* Parses a date and optionally a time if timeAttribute is specified.
*
* @param string $value
* @param string $timeValue optional time value
* @return int|false timestamp in utc
* @throws \Exception
*/
public static function parseDateTimeToTimestamp($value, $timeValue = null)
{
return DbDateValidator::parseDateTime($value, $timeValue);
}
/**
* Parses a date and optionally a time if timeAttribute is specified to
* an given pattern or the default pattern 'Y-m-d' if no pattern is provided.
*
* @param string $value date value
* @param string $pattern pattern
* @param string $timeValue optional time value
* @return int|false timestamp in utc or false in case value was could not be parsed
* @throws \Exception
*/
public static function parseDateTime($value, $pattern = 'Y-m-d', $timeValue = null)
{
$ts = self::parseDateTimeToTimestamp($value, $timeValue);
if($ts === false) {
return false;
}
$dt = new \DateTime();
$dt->setTimestamp($ts);
return $dt->format($pattern);
}
}