public function getTimeStamp($date = null, $replaceInsertTags = true, $timezone = null)
    {
        if (null === $date) {
            return 0;
        }

        if ($date instanceof \DateTime) {
            $timezone ? $date->setTimezone(new \DateTimeZone($timezone)) : null;

            return $date->getTimestamp();
        }

        if (true === $replaceInsertTags) {
            $date = Controller::replaceInsertTags($date, false);
        }

        if (is_numeric($date)) {
            $dateTime = new \DateTime(null, $timezone ? new \DateTimeZone($timezone) : null);
            $dateTime->setTimestamp($date);

            return $dateTime->getTimestamp();
        }

        if (false !== ($dateTime = strtotime($date))) {
            $dateTime = new \DateTime($date, $timezone ? new \DateTimeZone($timezone) : null);

            return $dateTime->getTimestamp();
        }

        return 0;
    }