IntlDateFormatter :: Parse返回Date解析失败:U_PARSE_ERROR

时间:2012-04-23 12:48:34

标签: php linux symfony

我正在为我的应用程序使用symfony2。在日期类型表单字段验证期间,symfony尝试解析传入的字符串日期值。由于某种原因,这在本地工作(运行MAMP& php 5.3.6)但在我们的远程fedora服务器上失败。 (php 5.3.8)。这里有一些detils,我包括可能相关的任何东西。

实例化新的IntlDateFormatter时我正在使用

locale: en_US_POSIX
date format: 2
time format: -1
timezone: America/Chicago
calendar: 1
pattern: MM-dd-yyyy

使用 11/21/2012

之类的日期在IntlDateFormatter上调用Parse
$timestamp = $this->getIntlDateFormatter()->parse($value);

这是getIntl​​DateFormatter方法。

protected function getIntlDateFormatter()
{
    $dateFormat = $this->dateFormat;
    $timeFormat = $this->timeFormat;
    $timezone = $this->outputTimezone;
    $calendar = $this->calendar;
    $pattern = $this->pattern;

    return new \IntlDateFormatter(\Locale::getDefault(), $dateFormat, $timeFormat, $timezone, $calendar, $pattern);
}

处理将字符串日期值转换为本地化日期时间值的整个类是here ...

这会导致解析失败,可以使用以下命令访问错误:intl_get_error_message()

以下是远程计算机上phpinfo()的一些片段:

Intl Config

Date Config

如果它有帮助......整个phpinfo()的屏幕截图()..... http://f.cl.ly/items/3q2q2C3Z0b0K1a0F0c3F/phpinfo%20.png

1 个答案:

答案 0 :(得分:3)

我也遇到了这个问题然后我深入搜索并发现日期格式错误。你应该选择这种格式的日期'format' => 'yyyy-MM-dd H:m'

这是完整列表文件将此行添加到过滤器字段

->add('createdAt', 'doctrine_orm_datetime_range', array('field_type' => 'sonata_type_datetime_range'), null, array(
   'widget' => 'single_text',
   'format' => 'yyyy-MM-dd H:m',
   'required' => false,
   'attr' =>array('class' => 'datetimepicker'))
  )

然后以此格式2014-09-29 4:46

输入开始日期和结束日期

希望这会解决问题