2

私は自分のアプリケーションにsymfony2を使用しています。日付型フォームフィールドの検証中に、symfonyは渡された文字列の日付値を解析しようとします。何らかの理由でこれはローカルで機能しますが(MAMPとphp 5.3.6を実行)、リモートのfedoraサーバーでは失敗します。(php 5.3.8)。ここにいくつかの詳細があります、私は関連するかもしれないものをすべて含めています。

私が使用している新しいIntlDateFormatterをインスタンス化するとき

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

解析は、2012年11月21日のような日付を使用してIntlDateFormatterで呼び出されます

$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);
}

文字列の日付値からローカライズされた日時値への変換を処理するクラス全体がここにあります...

これにより、解析が失敗します。エラーには、intl_get_error_message()を使用してアクセスできます。

リモートマシン上のphpinfo()からのスニペットは次のとおりです。

国際構成

日付設定

そしてそれが役立つなら...phpinfo().....全体のスクリーンショットhttp://f.cl.ly/items/3q2q2C3Z0b0K1a0F0c3F/phpinfo%20.png

4

1 に答える 1

3

私もこの問題に直面し、詳細に検索したところ、日付の形式が間違っていることがわかりました。この形式のような日付を選択する必要があります'format' => 'yyyy-MM-dd H:m'

SO これは完全なリスト ファイルで、この行をフィルター フィールドに追加します。

->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

これで問題が解決することを願っています

于 2014-09-29T11:17:27.707 に答える