Symfony2 和 DateTimePicker 日期格式错误?

Posted

技术标签:

【中文标题】Symfony2 和 DateTimePicker 日期格式错误?【英文标题】:Symfony2 and DateTimePicker bad date format? 【发布时间】:2014-07-26 05:40:46 【问题描述】:

我正在尝试使用 symfony 表单选择日期时间。 这是我的表格:

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)

    $builder
        ->add('formation_date','datetime',array('label' => "Séance le :",
        'widget' => 'single_text',
        'format' => 'dd/MM/yyyy hh:mm',
        'attr' => array('class' => 'date', 'readonly' => 'readonly')
        ))               
    ;

我正在使用 jquery datetimepicker。 这是我在页面上调整数据的脚本:

<script type="text/javascript">
$(document).ready(function() 
$.datepicker.setDefaults(
    $.extend(
        'dateFormat':'dd/mm/yy',
        $.datepicker.regional['fr']
    )
);
$.timepicker.setDefaults(
    $.extend(
        'timeFormat':'hh:mm:00'
    )
);
  jQuery('.date').datetimepicker(
    changeYear: true,
    showButtonPanel: true,
    monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
    dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
    dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
    dayNamesMin: ['D','L','M','M','J','V','S'],
    currentText: 'Aujourd\'hui',
    closeText: 'Fermer',
    prevText: 'Précédent',
    nextText: 'Suivant',
    minDate: "y", 
    maxDate: "+10y"
    );
);
</script>

但是数据库中的时间不正确。虽然我发布了字符串'21/06/2014 12:00:00'(长度=19,但它在数据库和我的实体中是 00:00:00 在 handleRequest 之后。

    > object(DateTime)[809]
public 'date' => string '2014-06-21 00:00:00' (length=19)
public 'timezone_type' => int 1
public 'timezone' => string '+00:00' (length=6)

我有 DateTime::__construct():无法在位置 0 (2) 解析时间字符串 (21/06/2014 12:00:00):意外字符 如果我尝试这样做:

$date = new DateTime($request->request->get('intranet_rhbundle_dateformation')["formation_date"]);

所以,我不知道如何解决它......

【问题讨论】:

不应该是'format' =&gt; 'd/m/Y H:i',吗? 在表格上?不,如果我这样说,我有:““格式”选项应该包含字母“y”、“M”和“d”。它的当前值是“d/m/YH:i”。” ^^ 【参考方案1】:

对于Failed to parse time string的问题,试试这个:

$date = new DateTime::createFromFormat(
    'd/m/Y H:i:s',
    $request->request->get('intranet_rhbundle_dateformation')["formation_date"]
);

DateTime::createFromFormat()

【讨论】:

formation_date 是我实体中的 DateTime 字段: /** * * @var string $formation_date * * @ORM\Column(name="formation_date", type="datetime", nullable=false ) * @Assert\DateTime() **/ 私人 $formation_date;并且不需要“新”。根据你的提议,我有: object(DateTime)[779] public 'date' => string '2014-06-19 12:00:00' (length=19) public 'timezone_type' => int 3 public 'timezone' => string 'UTC' (length=3) 这很好 :) 我试试这个日期,希望它会起作用。 你能var_dump($request-&gt;request-&gt;get('intranet_rhbundle_dateformation')["formation_date"]) 吗? 我在您编辑之前尝试使用错误的日期格式,发表评论后我看到了明显的错误。对不起! 是的,最终的方法不是很干净,但它是有效的!我希望任何人都能找到不需要使用日期时间变量的正确配置。你的回答是正确的谢谢你! :)

以上是关于Symfony2 和 DateTimePicker 日期格式错误?的主要内容,如果未能解决你的问题,请参考以下文章

同步 MonthCalendar 和 Datetimepicker

datetimepicker时间控件

Bootstrap 3 datetimepicker - MinTime 和 MaxTime

自定义 DateTimePicker 的边框和按钮

DateTimePicker 设置日历和时间文化

DateTimePicker:jQuery日期和时间插件