0

我有一个国际化(英语/西班牙语)的应用程序,但我在日期方面遇到了一些问题。我在表单中的日期字段:

 $builder->add('begin_date', 'date', array('required' => false, 'widget' => 'single_text'))

默认情况下基于语言环境的日期格式:'es' => 23/05/2012 'en' => 2012 年 5 月 23 日

但是当我的控制器中的 locale='es' 时我不能这样做:

$my_datetime = new \DateTime($request->get('begin_date') 

我有一个 datetime 构造函数错误,因为传递的日期格式为 dd/MM/YY,应该是 MM/dd/YY

我该如何解决?

4

2 回答 2

0

只有用户端(所以 html)是国际化的。

数据输入应该映射到您应该从表单中请求的 DateTime 对象:

$form->bindRequest($this->getRequest()); $myDateTime = $form->get('BeginDate');

于 2012-05-24T07:12:41.370 回答
0

尝试使用DateTime::createFromFormat()。将导致如下所示:

$formats    = array('en' => 'F d, Y', 'es' => 'd/m/Y');
$myDateTime = DateTime::createFromFormat($formats[$request->getLocale()], $request->get('begin_date'));
于 2016-08-23T13:41:50.203 回答