CakePHP 3.x 和日期时间选择器
CakePHP 3.x and datetimepicker
我在添加函数中使用 https://github.com/xdan/datetimepicker 到 select 日期。奇迹般有效。现在当我想编辑它时 - 它输入了一个奇怪的日期。
自定义更改:
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({
format:'Y-m-d H:i',
lang: 'de'
});
我认为的输出:
<input type="text" name="datetime" id="datetimepicker" value="16.10.19 15:00">
我的编辑视图的调试输出
'datetime' => object(Cake\I18n\FrozenTime) {
'time' => '2019-10-16T15:00:00+02:00',
'timezone' => 'Europe/Berlin',
'fixedNowTime' => false
}
将 date_default_timezone_set 更改为 UTC。但这没有帮助。我想知道我的应用程序从哪里得到将其放入我的输出中的想法。当我再次使用我的 dtp select 它并选择一个日期时,它也可以工作 - 但它需要一个随机日期,如 2019-10-10,你必须一路返回,这非常不方便:/
有什么想法吗?
编辑
我在修补实体之前在我的 edit() 函数中添加了它并且它起作用了。
$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm');
您刚刚使用date_default_timezone_set('Europe/Berlin');设置服务器时区但是JavaScript 不关心服务器时区,如果你没有设置。 JavaScript 始终尝试使用您的 PC 时间。 所以,你需要使用JavaScript设置datetimepicker时区,如果datetimepicker 有时区选项。
或
尝试更改您的 edit.ctp 代码如下 -
echo $this->Form->input(
'datetime',
[
'label' => __('Datum'),
'type'=>'text',
'id' => 'datetimepicker',
'default' => date('Y-m-d H:i') #Set time for today
]
);
我在修补实体之前将它添加到我的 edit() 函数中,现在它可以工作了。希望这会帮助其他人。如果有人知道更好的方法,请分享!我认为这只是一种解决方法。
$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm');
我在添加函数中使用 https://github.com/xdan/datetimepicker 到 select 日期。奇迹般有效。现在当我想编辑它时 - 它输入了一个奇怪的日期。
自定义更改: 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({
format:'Y-m-d H:i',
lang: 'de'
});
我认为的输出:
<input type="text" name="datetime" id="datetimepicker" value="16.10.19 15:00">
我的编辑视图的调试输出
'datetime' => object(Cake\I18n\FrozenTime) {
'time' => '2019-10-16T15:00:00+02:00',
'timezone' => 'Europe/Berlin',
'fixedNowTime' => false
}
将 date_default_timezone_set 更改为 UTC。但这没有帮助。我想知道我的应用程序从哪里得到将其放入我的输出中的想法。当我再次使用我的 dtp select 它并选择一个日期时,它也可以工作 - 但它需要一个随机日期,如 2019-10-10,你必须一路返回,这非常不方便:/
有什么想法吗?
编辑
我在修补实体之前在我的 edit() 函数中添加了它并且它起作用了。
$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm');
您刚刚使用date_default_timezone_set('Europe/Berlin');设置服务器时区但是JavaScript 不关心服务器时区,如果你没有设置。 JavaScript 始终尝试使用您的 PC 时间。 所以,你需要使用JavaScript设置datetimepicker时区,如果datetimepicker 有时区选项。
或
尝试更改您的 edit.ctp 代码如下 -
echo $this->Form->input(
'datetime',
[
'label' => __('Datum'),
'type'=>'text',
'id' => 'datetimepicker',
'default' => date('Y-m-d H:i') #Set time for today
]
);
我在修补实体之前将它添加到我的 edit() 函数中,现在它可以工作了。希望这会帮助其他人。如果有人知道更好的方法,请分享!我认为这只是一种解决方法。
$adress['datetime'] = $adress['datetime']->i18nFormat('yyyy-MM-dd HH:mm');