public function from(
        $datetime = [],
        $locale = 'en_US',
        $calendar = null,
        $timezone = 'UTC'
    ) {
        $datetime = $this->parseDateTime($datetime);
        $calendar = $calendar ?: self::$CAL_GREGORIAN;

        $this->setIntlCalendar()
            ->setFromCalendar($calendar)->setFromLocale($locale)
            ->setOriginCalendar($this->getFromLocaleAndCalendar())
            ->setOriginTimeZone($timezone)
            ->setOriginDate($datetime);

        return $this;
    }