рд╕рд┐рдореНрдлрдиреА 4 + рдЯрд╣рдиреА рдкрд░ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рдЙрддреНрдкрд╛рдж рдХреЗ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрддреНрдкрд╛рдж рдРрд╕реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмрдврд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдХреНрд╖реЗрддреНрд░ (рд╕рд╛рдХреНрд╖реНрдп) рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдкреГрд╖реНрдарднреВрдорд┐ рдпрд╣ рд╣реИ: рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдЖрд▓рд╛ рд╕реАрдЖрд░рдПрдо / рдИрдЖрд░рдкреА рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХреА, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдХрд▓ рд╡реЗ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╡реНрд▓рд╛рджрд┐рд╡реЛрд╕реНрддреЛрдХ рд╕реЗ рдХрд▓рд┐рдирд┐рдирдЧреНрд░рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдорддрд╛рдзрд┐рдХрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдордиреЗ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдФрд░ рдЕрдзрд┐рдХрддрдо рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рддреАрди рдХрд╛рд░реНрдп рдмрдврд╝реЗ рд╣реБрдП рд╣реИрдВ: рд╣рдо рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреИрд╕реЗ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╣рдо рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рдордп, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рдЖрд▓рдВрдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдореЙрд╕реНрдХреЛ рдпреВрдЯреАрд╕реА + 3 рдореЗрдВ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╕рдордп рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ (рдФрд░ рд╣рдореЗрд╢рд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдпреВрдЯреАрд╕реА + 3 рд╣реИ)ред рдмреЗрд╢рдХ, рд╣рдо рд╕рдордЭ рдЧрдП рдХрд┐ рдЗрд╕ рдФрд░ рдЕрдиреНрдп рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЖрдк рд╕рднреА рдореМрдЬреВрджрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ UTC + -0 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ DBMS рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рд╣рдо рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрде рдкрд░ рдЪрд▓реЗ рдЧрдП, рд╕рднреА рдЕрдзрд┐рдХ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╛рдХреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдЦреЛрдпрд╛,рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдерд╛ред

рдореЙрд╕реНрдХреЛ рдПрдХ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛, рд╕рд╛рде рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ (рд╕рдВрдЧрдарди, рд╢рд╣рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд▓реЗрдирджреЗрди, рдЖрджрд┐) рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ред рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдЗрдХрд╛рдИ рдЬрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд╡рд╣рд╛рдБ рддрд░реНрдХ рдорд╛рдирдХ рд╣реИ рдФрд░ рдареАрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕реЗрд╡рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

$localizationService->getTimezone();

рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛: рдЬрдм рдЯреНрд╡рд┐рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

function __construct(Environment $twig, LocalizationService $localizationService) {
    $twig->getExtension('Twig_Extension_Core')->setTimezone($localizationService->getTimezone());
}

рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдИ рдереА рдХрд┐ рдХрд┐рд╕реА рднреА рддрд╛рд░реАрдЦ-рд╕рдордп рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, "01.01.2020 12:30 (рдореЙрд╕реНрдХреЛ)" рдПрдХ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрд╛рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╢рд░реНрдд рдЖрджреЗрд╢ / рдХрд╛рд░реНрдп / рд▓реЗрдирджреЗрди рдореЗрдВ рдЬреЛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред рдмреЗрд▓реНрдЯред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдЖрд░рд╛рдо рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп / рдЖрд╡реЗрджрди / рд▓реЗрдирджреЗрди рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗред

рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рднреА рддрд░реНрдХ рдкреВрд░реНрд╡реЛрдХреНрдд getTimezone рдореЗрдВ рд╡рд╛рдпрд░реНрдб рдХрд░ рджрд┐рдП рдЧрдП рдереЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдЯреНрд╡рд┐рдЧ рдлрд┐рд▓реНрдЯрд░ рдпрд╛ рдлрдВрдХреНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдереЛрдбрд╝рд╛ рдкреВрдЫрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдорд╛рдирдХ рдЯрд╣рдиреА-рдлрд╝рд┐рд▓реНрдЯрд░ рддрд┐рдерд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛

...
new TwigFilter('date', [$this, 'date'], ['needs_environment' => true]),
...

function date(Twig_Environment $env, $date, $format = null, $timezone = null)
{
    $appendix = '';
    if (format && strpos($format, 'H:i') !== false)
        $appendix = ' ('.DateTimeFunctions::getRussianAbbrev($this->localizationService->getTimezone()).')';   
...
    //    date   $result
...
   return $result.$appendix;
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╕реЗ рд╣рдордиреЗ рдорд╛рдирдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд┐рдпрд╛, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:

...
new TwigFilter('native_date', [$this, 'nativeDate'], [ 'needs_environment' => true]),
...
public function nativeDate(Twig_Environment $env, $date, $format = null, $timezone = null)
{
    //    date 
}

рдорд╛рдирдХ рджрд┐рдирд╛рдВрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛрдб / twig / twig / lib / Twig / Extension / Core :: twig_date_format_filter рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рд░рд▓, рдмрд╣реБрдд рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛:

$date->setTimeZone($timezone)
$result = $date->format($format);

рдмреЗрд╢рдХ, рдЖрдк рдЯреНрд╡рд┐рдЧ рдХреЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрд╛рдВрдЯрд╛ рдпрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдорд╛рдирдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рддрд╛рд░реАрдЦ-рд╕рдордп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдПрдХ рд╣рд▓:

private function getOffsetHours()
{
    if (!$this->isInit)
        $this->init();

    $local = new \DateTime('now', new \DateTimeZone($this->getTimezone()));
    $user = new \DateTime('now');

    $localOffset = $local->getOffset() / 3600;
    $globalOffset = $user->getOffset() / 3600;

    $diff = $globalOffset - $localOffset;
    return $diff;
}

public function toGlobalTime(\DateTimeInterface $dateTime): \DateTimeInterface 
{
    if (!$this->isInit)
        $this->init();

    $offsetHours = $this->getOffsetHours();

    if ($offsetHours > 0) {
        return $dateTime->modify('+ '.$offsetHours.' hours');
    } else  if($offsetHours < 0){
        return $dateTime->modify($offsetHours.' hours');
    }

    return $dateTime;
}

рдлрд┐рд░ рддрд╛рд░реАрдЦ-рд╕рдордп рдмрдЪрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реНрд░реЛрддрд╛рдУрдВ рдореЗрдВред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдордп рдФрд░ рддрд╛рд░реАрдЦ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддрдп рдХреА рдЧрдИ рд╣реИ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рдПрдХ рдФрд░ рдЪрд░рдо рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рд░реВрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдорд╛рдзрд╛рди рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдУрдорд┐рдиреЗрдЯ рдбреЗрдЯрд╛рдЯреИрдм-рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рднреА рдЖрд╕рд╛рди рдерд╛ред рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП DateTimeColumn рдХреЗ рдмрдЬрд╛рдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

class CustomDateTimeColumn extends DateTimeColumn
{
    
    private $localizationService;
    private $timeZone;
    
    public function __construct(LocalizationService $localizationService)
    {
        $this->localizationService = $localizationService;
        $this->timeZone = $localizationService->getTimezoneObject();
    }
    
   
    public function normalize($value)
    {
        $value->setTimeZone($this->timeZone);
        return parent::normalize($value);
    }
}

рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред рдЕрдЧрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреЛрдб рд╡реИрдХреНрдпреВрдо рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдбреАрдЖрдИ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрд╣рд╛рд░ рд╣реИрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рддреНрд╡рд░рд┐рдд рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдпрд╣ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдордЬреЛрд░ рд╣реИред рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд┐рдореНрдлрдиреА 4.2 рд╕реЗ 5 рддрдХ рдЪрд▓рд╛ рдЧрдпрд╛ред

All Articles