1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Framework\Stdlib\DateTime\Timezone;
- use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
- use Magento\Framework\Locale\ResolverInterface;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- /**
- * Class LocalizedDateToUtcConverter
- */
- class LocalizedDateToUtcConverter implements LocalizedDateToUtcConverterInterface
- {
- /**
- * Contains default date format
- *
- * @var string
- */
- private $defaultFormat = 'Y-m-d H:i:s';
- /**
- * @var TimezoneInterface
- */
- private $timezone;
- /**
- * @var ResolverInterface
- */
- private $localeResolver;
- /**
- * LocalizedDateToUtcConverter constructor.
- *
- * @param TimezoneInterface $timezone
- * @param ResolverInterface $localeResolver
- */
- public function __construct(
- TimezoneInterface $timezone,
- ResolverInterface $localeResolver
- ) {
- $this->timezone = $timezone;
- $this->localeResolver = $localeResolver;
- }
- /**
- * @inheritdoc
- */
- public function convertLocalizedDateToUtc($date)
- {
- $configTimezone = $this->timezone->getConfigTimezone();
- $locale = $this->localeResolver->getLocale();
- $formatter = new \IntlDateFormatter(
- $locale,
- \IntlDateFormatter::MEDIUM,
- \IntlDateFormatter::MEDIUM,
- $configTimezone
- );
- $localTimestamp = $formatter->parse($date);
- $gmtTimestamp = $this->timezone->date($localTimestamp)->getTimestamp();
- $formattedUniversalTime = date($this->defaultFormat, $gmtTimestamp);
- $date = new \DateTime($formattedUniversalTime, new \DateTimeZone($configTimezone));
- $date->setTimezone(new \DateTimeZone('UTC'));
- return $date->format($this->defaultFormat);
- }
- }
|