2015-09-18 29 views
2

一些奇怪的與我的日期時間字段在窗體中。 我剛剛更新的PHP版本5.5.29Symfony2 datetime表

表單域:

$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年9月18日 同時mking轉儲表單數據的(提交後),我看到一天的日期我選擇前:

2015年9月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命令顯示我的權利日期: -> % date Pn Rgs 18 13:00:29 MSK 2015

在形式上我嘗試添加: '形式'=> 'MM/DD/YYYY',它會沒有幫助,POST數據:形式[dateTo]:2015年9月18日


UPD

由於John Noel重新配置timezon e到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_timezoneview_timezone進行檢查,例如,

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

嘗試設置UTC的時區,看看你是否仍然遇到同樣的問題。接下來,請嘗試查看您的系統(不是PHP)時區,然後確保您的php.ini文件中的date.timezone設置與此相匹配。如果這些都沒有幫助,那可能是地區。

內部date字段使用LocaleIntlDateFormatter實例來確保格式化日期和時間並正確讀入。 PHP爲此使用ICU。有幾點,像這樣的問題可以使自己知道:

  1. 您的系統/ php.ini中/ Symfony的配置區域設置以奇怪的方式有所不同
  2. 如果您的PHP版本是針對一個奇怪的或者有缺陷編譯ICU的版本
  3. 存儲在系統上的語言環境可能不是最新的,或再次,可能是車

任何超出這一猜測。我遇到了類似的問題,您將UTC時間切換爲歐洲/倫敦時區,這些問題根據DST同步進行。我非常懷疑它是地區性的bugginess,但如果你確定你不是在操縱日期,那麼檢查就不會受到傷害。

+0

'model_timezone'=>'UTC' , 'view_timezone'=>'UTC', 發了!多謝,夥計! php.ini中的時區設置爲Eourope \ Moscrow – Cawa