diff --git a/dev/tests/integration/testsuite/Magento/Framework/Stdlib/DateTime/Filter/DateTimeTest.php b/dev/tests/integration/testsuite/Magento/Framework/Stdlib/DateTime/Filter/DateTimeTest.php index 69c63c84388ef..6a0b9582f0621 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Stdlib/DateTime/Filter/DateTimeTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Stdlib/DateTime/Filter/DateTimeTest.php @@ -70,9 +70,15 @@ public function localeDatetimeFilterProvider() ['fr_FR', '01/02/2010 15:30', '2010-02-01 15:30:00'], ['fr_FR', '01/02/2010 1:00', '2010-02-01 01:00:00'], ['fr_FR', '01/02/2010 01:00', '2010-02-01 01:00:00'], + ['en_US', '11/28/2010', '2010-11-28 00:00:00'], + ['en_US', '11/28/2010 1:00am', '2010-11-28 01:00:00'], + ['en_US', '11/28/2010 01:00am', '2010-11-28 01:00:00'], + ['es_ES', '28/11/2010', '2010-11-28 00:00:00'], + ['es_ES', '28/11/2010 23:12:00', '2010-11-28 23:12:00'], + ['es_ES', '28/11/2010 23:12', '2010-11-28 23:12:00'], ['de_DE', '01/02/2010 15:30', '2010-02-01 15:30:00'], ['en_US', '2017-09-01T15:30:00.000Z', '2017-09-01 15:30:00'], - ['fr_FR', '2017-09-01T15:30:00.000Z', '2017-09-01 15:30:00'], + ['fr_FR', '2017-09-01T15:30:00.000Z', '2017-09-01 15:30:00'] ]; } } diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php index 90aec6024fe12..58b08557baf30 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php @@ -5,11 +5,17 @@ */ namespace Magento\Framework\Stdlib\DateTime; -use \Magento\Framework\Exception\LocalizedException; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\App\ScopeInterface; +use Magento\Framework\App\ScopeResolverInterface; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Locale\ResolverInterface; use Magento\Framework\Phrase; /** * Timezone library + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Timezone implements TimezoneInterface { @@ -29,7 +35,7 @@ class Timezone implements TimezoneInterface protected $_scopeType; /** - * @var \Magento\Framework\App\ScopeResolverInterface + * @var ScopeResolverInterface */ protected $_scopeResolver; @@ -44,28 +50,28 @@ class Timezone implements TimezoneInterface protected $_defaultTimezonePath; /** - * @var \Magento\Framework\App\Config\ScopeConfigInterface + * @var ScopeConfigInterface */ protected $_scopeConfig; /** - * @var \Magento\Framework\Locale\ResolverInterface + * @var ResolverInterface */ protected $_localeResolver; /** - * @param \Magento\Framework\App\ScopeResolverInterface $scopeResolver - * @param \Magento\Framework\Locale\ResolverInterface $localeResolver + * @param ScopeResolverInterface $scopeResolver + * @param ResolverInterface $localeResolver * @param \Magento\Framework\Stdlib\DateTime $dateTime - * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param ScopeConfigInterface $scopeConfig * @param string $scopeType * @param string $defaultTimezonePath */ public function __construct( - \Magento\Framework\App\ScopeResolverInterface $scopeResolver, - \Magento\Framework\Locale\ResolverInterface $localeResolver, + ScopeResolverInterface $scopeResolver, + ResolverInterface $localeResolver, \Magento\Framework\Stdlib\DateTime $dateTime, - \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + ScopeConfigInterface $scopeConfig, $scopeType, $defaultTimezonePath ) { @@ -174,6 +180,8 @@ public function date($date = null, $locale = null, $useTimezone = true, $include $timeType, new \DateTimeZone($timezone) ); + + $date = $this->appendTimeIfNeeded($date, $includeTime); $date = $formatter->parse($date) ?: (new \DateTime($date))->getTimestamp(); break; } @@ -226,7 +234,7 @@ public function scopeTimeStamp($scope = null) */ public function isScopeDateInInterval($scope, $dateFrom = null, $dateTo = null) { - if (!$scope instanceof \Magento\Framework\App\ScopeInterface) { + if (!$scope instanceof ScopeInterface) { $scope = $this->_scopeResolver->getScope($scope); } @@ -318,4 +326,19 @@ public function convertConfigTimeToUtc($date, $format = 'Y-m-d H:i:s') return $date->format($format); } + + /** + * Retrieve date with time + * + * @param string $date + * @param bool $includeTime + * @return string + */ + private function appendTimeIfNeeded($date, $includeTime) + { + if ($includeTime && !preg_match('/\d{1}:\d{2}/', $date)) { + $date .= " 0:00am"; + } + return $date; + } }