2016-10-05 33 views
1

我正在Symfony 2.7中進行項目工作。存儲在數據庫中的時間是在選取之前2小時

我們得到了以下問題:

在薩姆的地方,用戶必須選擇一個日期和事件或提醒等 時間他們可以用粉底的DateTimePicker選擇它。

通過請求發送的數據似乎很好: Vermifuge,date => 05.10.2016 16:00,pet => 22,description =>,可更新=> 1,延遲=> 3個月, nextDate => 2017年5月1日16點00分,活性=> 1,_token => QTvz3ykjcngQh2Y5SvW5KWdO2D35Ue8m8CfFtZBQxDc](從symfony的工具欄C/C)

但是,當在控制器I轉儲值:

$this->setup($request); 
    $entity = $this->findOrThrowNotFound($id); 

    $this->denyAccessUnlessGranted('edit', $entity->getPet(), 'Unauthorized access!'); 

    $editForm = $this->createCreateForm($entity); 
    $editForm->handleRequest($request); 
    dump($editForm['date']); 
    dump($editForm['date']->getData()); 

第一次轉儲是:

Form {#2369 ▼ 
-config: FormBuilder {#2370 ▶} 
-parent: Form {#2363 ▶} 
-children: OrderedHashMap {#2371 ▶} 
-errors: [] 
-submitted: true 
-clickedButton: null 
-modelData: DateTime {#2336 ▶} 
-normData: DateTime {#2336 ▶} 
-viewData: "05.10.2016 16:00" 
-extraData: [] 
-transformationFailure: null 
-defaultDataSet: true 
-lockSetData: false 
} 

,第二個:

DateTime {#4733 ▼ 
+"date": "2016-10-05 14:00:00.000000" 
+"timezone_type": 1 
+"timezone": "+00:00" 
} 

所以在某一時刻的時間變化。

在我的phpinfo()我有:

日期/時間的支持使

「奧爾森」 時區數據庫版本2016.3

時區數據庫內部

默認時區歐洲/蘇黎世

感謝您的幫助

回答

0

它看起來像你的數據庫的時間是不一樣的服務器,嘗試此查詢您的分貝:

SELECT now(); 

,然後嘗試從PHP轉儲:

$now = new DateTime(); 
echo $now->format('Y-m-d H:i:s'); // MySQL datetime format 
echo $now->getTimestamp(); 

希望它我會幫你...

+0

嗨, 首先,感謝您的幫助。 我的第一個想法是,在數據庫中有錯誤,但SELECT now()返回'2016-10-05 09:52:00'和PHP代碼返回'2016-10-05 09:52:25 '和'1475653945'顯然他們配置相同(和正確) –

+0

它必須是時區,蘇黎世 - > UTC + 01:00。 除了你的php.ini,你可以在symfony中設置爲默認時區(谷歌它)。 也許你隱藏了TimezoneType字段somwhere? [http://symfony.com/doc/current/reference/forms/types/timezone.html] –

+0

在php.ini中我沒有任何時區設置,但當我做一個轉儲(date_default_timezone_get());我得到正確的「歐洲/蘇黎世」。 我同意你在代碼的某個地方有一個TimeZone誰設置,但無法找到:( 我會繼續挖掘 –

相關問題