2015-09-18 2 views
2

Что-то странное hppning с моим полем datetime в форме. Я только что обновил PHP версию 5.5.29Symfony2 datetime form

Форма поля:

$customerReportForm->add('dateTo', 'date', [ 
    'data' => new \DateTime(), 
    'required' => false, 
    'widget' => 'single_text', 
    'label' => 'До', 
    'attr' => array('class' => 'datepicker', "data-date-format" => "yy-mm-dd") 
]); 

в Dev-консоли я вижу вид [dateTo]: 2015-09-18 и в то время как mking дамп данных формы (после того, как представить), я вижу дату с дня, прежде чем я выбрал:

2015-09-17 ["dateTo"]=> object(DateTime)#436 (3) { ["date"]=> string(26) "2015-09-17 23:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Moscow" }

В консольной команде даты показывает мне правильную дату: -> % date Pn Rgs 18 13:00:29 MSK 2015

В форме я пытаюсь добавить: «формат» => «ММ/дд/гггг», то это бы не помогло, почтовые данные : форма [dateTo]: 09/18/2015


UPD

Благодаря John Noel, перенастроить timezon е к UTC и

'model_timezone' => 'UTC', 
'view_timezone' => 'UTC', 

в виде фиксированной моей проблемы.

+0

Попробуйте изменить даты для сепаратора обеспечивает/и дайте мне знать, как это пошло – Dheeraj

+0

Твой http://storage8.static.itmages.com/i/15/0918/h_1442570800_2664789_e6769a096b.png – Cawa

ответ

1

Это очень похоже на часовой пояс или проблему с локальностью.

Первый может быть проверен с помощью two optionsmodel_timezone и view_timezone в поле формы, например.

$customerReportForm->add('dateTo', 'date', [ 
    // ... 
    'model_timezone' => 'UTC', 
    'view_timezone' => 'UTC', 
]); 

Попробуйте установить часовой пояс таким образом в UTC и посмотреть, есть ли у вас все тот же вопрос. Затем попробуйте посмотреть часовой пояс вашей системы (а не PHP), затем убедитесь, что параметр date.timezone в вашем файле php.ini соответствует этому. Если это не помогает, это может быть локаль.

Внутреннее поле date использует Locale и IntlDateFormatter экземпляры, чтобы убедиться, что даты и время отформатированы и считаны правильно. Для этого PHP использует ICU. Есть несколько моментов, что вопрос, как это мог бы сделать себе знать:

  1. Вашей системы/php.ini/Symfony конфигурация локали отличается странным образом
  2. Если ваша версия PHP скомпилирована против странно или багги версия ICU
  3. локали, хранящиеся в вашей системе может быть не в курсе или опять же, может быть багги

Все, что за это предположение. Я столкнулся с аналогичной проблемой, которую вы описываете, с переключением часового пояса с UTC на Европу/Лондон, которые синхронизированы в зависимости от DST. Я очень сомневаюсь, что это жестокость в локали, но если вы уверены, что не будете манипулировать датами в любом случае, это не помешает проверить.

+0

«model_timezone» => «UTC» , 'view_timezone' => 'UTC', сделал это! Спасибо приятель! Часовой пояс в php.ini установлен в Eourope \ Moscrow – Cawa