2016-10-03 84 views
2

我使用https://github.com/xdan/datetimepicker在我的add函數中選擇一個日期。奇蹟般有效。現在當我想編輯它時 - 它輸入一個奇怪的日期。CakePHP 3.x和datetimepicker

的變遷: bootstrap.php中

date_default_timezone_set('Europe/Berlin'); 

edit.ctp

echo $this->Form->input('datetime', ['label' => __('Datum'), 'type'=>'text','id' => 'datetimepicker','selected' => '0000-00-00 00:00:00']); 

的DateTimePicker

$('#datetimepicker').datetimepicker({ 
format:'Y-m-d H:i', 
lang: 'de' 
}); 

輸出在我的觀點:從我的編輯視圖

'datetime' => object(Cake\I18n\FrozenTime) { 

     'time' => '2019-10-16T15:00:00+02:00', 
     'timezone' => 'Europe/Berlin', 
     'fixedNowTime' => false 

    } 

更改date_default_timezone_set已經爲UTC

<input type="text" name="datetime" id="datetimepicker" value="16.10.19 15:00"> 

調試輸出。但這沒有幫助。我想知道把我的應用程序放在我的輸出中的想法。當我再次用我的dtp選擇它並選擇一個日期時它也可以工作 - 但它需要2019-10-10這樣的隨機日期,並且您必須一路回去,這很不方便:/

任何想法?

編輯

我說這在我的編輯()函數之前我修補的實體,它workd。

$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm'); 

回答

1

您只需設置使用date_default_timezone_set('歐洲/柏林)服務器時區;JavaScript不關心服務器時區,如果你沒有設置。 JavaScript總是嘗試使用您的PC時間。 所以,您需要設置的DateTimePicker使用的JavaScript時區,如果的DateTimePicker具有時區選項。

OR

試圖改變自己的edit.ctp代碼像下面 -

​​
+1

這將有所幫助,但因爲我已經設置日期時間,當我添加它時,這是行不通的:/我編輯了這個問題。我發現了一個解決方案(在我的編輯功能) – Isengo

+0

啊!謝謝@Isengo –

+0

謝謝@Sumon Sarker – Isengo

0

我在編輯中添加()這個函數之前我修補實體和它現在有效。希望這會幫助其他人。如果有人知道更好的方法,請分享!我認爲這只是一個解決方法。

$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm');