You are here

class PersianDrupalDateTime in Persian Date for Drupal 8 8.4

Same name and namespace in other branches
  1. 8 src/Plugin/Datetime/PersianDrupalDateTime.php \Drupal\persian_date\Plugin\Datetime\PersianDrupalDateTime

Hierarchy

Expanded class hierarchy of PersianDrupalDateTime

11 files declare their use of PersianDrupalDateTime
BlockContentTranslationHandler.php in src/TranslationHandler/BlockContentTranslationHandler.php
CommentTranslationHandler.php in src/TranslationHandler/CommentTranslationHandler.php
ContentTranslationHandler.php in src/TranslationHandler/ContentTranslationHandler.php
DateTimeWidgetBase.php in src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
NodeTranslationHandler.php in src/TranslationHandler/NodeTranslationHandler.php

... See full list

File

src/Plugin/Datetime/PersianDrupalDateTime.php, line 17

Namespace

Drupal\persian_date\Plugin\Datetime
View source
class PersianDrupalDateTime extends DrupalDateTime {
  public function format($format, $settings = []) {
    $dateTime = PersianDateFactory::buildFromOriginalDateTime($this->dateTimeObject);
    return $dateTime
      ->format($format);
  }
  public static function createFromDrupalDateTime(DrupalDateTime $dateTime) {
    $object = new self();
    $object->dateTimeObject = $dateTime->dateTimeObject;
    $object->langcode = $dateTime->langcode;
    $object->formatTranslationCache = $dateTime->formatTranslationCache;
    $object->stringTranslation = $dateTime->stringTranslation;
    $object->errors = $dateTime->errors;
    $object->inputFormatAdjusted = $dateTime->inputFormatAdjusted;
    $object->inputFormatRaw = $dateTime->inputFormatRaw;
    $object->inputTimeZoneRaw = $dateTime->inputTimeZoneRaw;
    $object->inputTimeZoneAdjusted = $dateTime->inputTimeZoneAdjusted;
    $object->inputTimeRaw = $dateTime->inputTimeRaw;
    $object->inputTimeAdjusted = $dateTime->inputTimeAdjusted;
    return $object;
  }
  public static function createFromFormat($format, $time, $timezone = NULL, $settings = []) {
    if (!isset($settings['validate_format'])) {
      $settings['validate_format'] = TRUE;
    }

    // Tries to create a date from the format and use it if possible.
    // A regular try/catch won't work right here, if the value is
    // invalid it doesn't return an exception.
    $datetimeplus = new static('', $timezone, $settings);
    $date = false;
    if ($time) {
      list($year, $month, $day, $hour, $minute, $second) = array_values(jDateTime::parseFromFormat($format, $time));
      $date = PersianDateFactory::buildFromExactDate((int) $hour, (int) $minute, (int) $second, (int) $month, (int) $day, (int) $year);
    }
    if (!$date instanceof \DateTime) {
      throw new \InvalidArgumentException('The date cannot be created from a format.');
    }
    else {

      // Functions that parse date is forgiving, it might create a date that
      // is not exactly a match for the provided value, so test for that by
      // re-creating the date/time formatted string and comparing it to the input. For
      // instance, an input value of '11' using a format of Y (4 digits) gets
      // created as '0011' instead of '2011'.
      if ($date instanceof DateTimePlus) {
        $test_time = $date
          ->format($format, $settings);
      }
      elseif ($date instanceof \DateTime) {
        $test_time = $date
          ->format($format);
      }
      if ($settings['validate_format'] && $test_time != $time) {
        throw new \UnexpectedValueException('The created date does not match the input value.');
      }
      $date = $date
        ->getOriginalDateTime();
      $date
        ->setTimezone($datetimeplus
        ->getTimezone());
      $datetimeplus
        ->setTimestamp($date
        ->getTimestamp());
      $datetimeplus
        ->setTimezone($date
        ->getTimezone());
    }
    return $datetimeplus;
  }
  public function getDateTime() {
    return $this->dateTimeObject;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DateTimePlus::$dateParts protected static property An array of possible date parts.
DateTimePlus::$dateTimeObject protected property The DateTime object.
DateTimePlus::$errors protected property An array of errors encountered when creating this date.
DateTimePlus::$inputFormatAdjusted protected property The prepared format, if provided.
DateTimePlus::$inputFormatRaw protected property The value of the format passed to the constructor.
DateTimePlus::$inputTimeAdjusted protected property The prepared time, without timezone, for this date.
DateTimePlus::$inputTimeRaw protected property The value of the time value passed to the constructor.
DateTimePlus::$inputTimeZoneAdjusted protected property The prepared timezone object used to construct this date.
DateTimePlus::$inputTimeZoneRaw protected property The value of the timezone passed to the constructor.
DateTimePlus::$langcode protected property The value of the language code passed to the constructor.
DateTimePlus::arrayToISO public static function Creates an ISO date from an array of values.
DateTimePlus::checkArray public static function Checks that arrays of date parts will create a valid date.
DateTimePlus::checkErrors public function Examines getLastErrors() to see what errors to report.
DateTimePlus::createFromArray public static function Creates a date object from an array of date parts.
DateTimePlus::createFromDateTime public static function Creates a date object from an input date object.
DateTimePlus::createFromTimestamp public static function Creates a date object from timestamp input.
DateTimePlus::datePad public static function Pads date parts with zeros.
DateTimePlus::diff public function Returns the difference between two DateTimePlus objects.
DateTimePlus::FORMAT constant
DateTimePlus::getErrors public function Gets error messages.
DateTimePlus::getPhpDateTime public function Gets a clone of the proxied PHP \DateTime object wrapped by this class.
DateTimePlus::hasErrors public function Detects if there were errors in the processing of this date.
DateTimePlus::prepareArray public static function Creates a complete array from a possibly incomplete array of date parts.
DateTimePlus::prepareFormat protected function Prepares the input format value.
DateTimePlus::prepareTime protected function Prepares the input time value.
DateTimePlus::render public function Renders the timezone name. Overrides ToStringTrait::render
DateTimePlus::RFC7231 constant A RFC7231 Compliant date.
DateTimePlus::setDefaultDateTime public function Sets the default time for an object built from date-only data.
DateTimePlus::__call public function Implements the magic __call method.
DateTimePlus::__callStatic public static function Implements the magic __callStatic method.
DateTimePlus::__clone public function Implements the magic __clone method.
DrupalDateTime::$formatTranslationCache protected property Formatted strings translation cache.
DrupalDateTime::prepareTimezone protected function Overrides prepareTimezone(). Overrides DateTimePlus::prepareTimezone
DrupalDateTime::__construct public function Constructs a date object. Overrides DateTimePlus::__construct
PersianDrupalDateTime::createFromDrupalDateTime public static function
PersianDrupalDateTime::createFromFormat public static function Creates a date object from an input format. Overrides DateTimePlus::createFromFormat
PersianDrupalDateTime::format public function Overrides format(). Overrides DrupalDateTime::format
PersianDrupalDateTime::getDateTime public function
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
ToStringTrait::_die protected function For test purposes, wrap die() in an overridable method.
ToStringTrait::__toString public function Implements the magic __toString() method.