1

モデルを介してDBに日付を保存するのに問題があります。コントローラで、$ _ POSTから受け取った日付をログにダンプすると、「2012年11月10日07:30」の形式で日付が取得されます。私が使用する場合:

$AccountAppointment->start_date=Yii::app()->dateFormatter->format($_POST['AccountAppointment']['start_date'], 'dd/M/yyyy HH:mm');

エラーが発生します:

Invalid datetime format: 1292 Incorrect datetime value: '10/NoGMT+5/2012 07:30' for column 'start_date' 

dateFormatterの形式を「dd/M / yyyyHH:mm」または「dd / MM / yyyyHH:mm」または「dd / MMM / yyyyHH:mm」に変更すると、同じエラーがスローされます。

DbはMySQL5.0、Yiiバージョン1.1.12です。

どんな助けでも大歓迎です、私はほとんど立ち往生しています....ありがとう....

4

6 に答える 6

0

私は過去にこのようなものを使用しました。CDateTimeParserを使用して日付を解析し、希望どおりにフォーマットしました。

echo Yii::app()->dateFormatter->formatDateTime(
    CDateTimeParser::parse($classified->create_date, 'yyyy-MM-dd'
),'medium',null);

私はあなたがこれを行うことができると思います:

echo Yii::app()->dateFormatter->formatDateTime(
    CDateTimeParser::parse($classified->create_date, 'dd/MMM/yyyy HH:mm'
),'full',null);

また

echo Yii::app()->formatter->datetime(
    CDateTimeParser::parse($classified->create_date, 'dd/MMM/yyyy HH:mm')
);
于 2012-11-10T16:58:47.823 に答える
0

dd/MMM/yyyy HH:mm の日付形式を MySQL に変換する変換が見つからなかったので、独自の方法を作成しました。これは単なる回避策です。よりエレガントなソリューションを思いついたらすぐに、回答を更新します。以下は、私が作成したメソッドです。

    public function returnDate($inputDate){
    //Input format of date is : dd/MMM/yyyy HH:mm, example: 02/Feb/2012 18:20. The method converts the format to YYYY-MM-DD H:i which is compliant to MySQL 5.0 or above.
    $retval='';
    $dd=substr($inputDate, 0,2);
    $mm=substr($inputDate, 3,3);
    $yy=substr($inputDate,7,4);
    $tt=substr($inputDate,12,5);
    $month=0;
    switch($mm){
        case "Jan":
            $month='01';
            break;
        case "Feb":
            $month='02';
            break;
        case "Mar":
            $month='03';
            break;
        case "Apr":
            $month='04';
            break;
        case "May":
            $month='05';
            break;
        case "Jun":
            $month='06';
            break;
        case "Jul":
            $month='07';
            break;
        case "Aug":
            $month='08';
            break;
        case "Sep":
            $month='09';
            break;
        case "Oct":
            $month='10';
            break;
        case "Nov":
            $month='11';
            break;
        case "Dec":
            $month='12';
            break;
    }
    $retval=$yy.'-'.$month.'-'.$dd.' '.$tt;
    return $retval;
}
于 2012-11-11T09:24:49.610 に答える
0

あなたはフォーマット機能を理解していないと思います。下記を参照してください。

/**
 * Formats a date according to a customized pattern.
 * @param string $pattern the pattern (See {@link http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns})
 * @param mixed $time UNIX timestamp or a string in strtotime format
 * @return string formatted date time. Null if $time is null. (the null value check is available since Yii 1.1.11)
 */
public function format($pattern,$time){
----------------------
}

日付形式と時刻を切り替える必要があります。正解です:

  $AccountAppointment->start_date=Yii::app()->dateFormatter->format('dd/MM/yyyy HH:mm' ,$_POST['AccountAppointment']['start_date']);

私が誰かを助けることができることを願っています:)

于 2014-03-19T07:23:20.690 に答える
0

間違った形式を使用しています。"Nov" は pattern に対応しMMM、not M(先行ゼロなしの整数としての月) に対応します。

于 2012-11-10T17:01:38.947 に答える