문제

So it seems that PHP ActiveRecord is formatting the update timestamp (for me anyway)

When I print the updated date, it displays:

Wed, 05 Jun 2013 21:14:48 +0200

Where as in the DB I've got:

2013-06-23 20:04:18

Just to be a 100% certain I used PDO to retrieve the record it displayed exactly the format I see in the DB.

Any idea why this automatic formatting might happen? and if there is a way to correct it?

Thanks.

EDIT

Ok, so I discovered how to manipulate it:

$records->updated->format('Y-m-d');

However, I'd still like to know why it happens and if there is a way to set it by default.

도움이 되었습니까?

해결책

phpactiverecord retrieves it and stores it in an object that extends DateTime.

Normally you could do ->format($yourformat) for any DateTime object, but for the phpactiverecord child you get a default format that gets used if you do not supply one.

This extension also has a toString() function that calls this format(), so you get the default format (which you can set in this same class by the way).

Take a look at the DateTime.php class provided by PHPActiveRecord to find out more, but this is what happens:

 class DateTime extends \DateTime{
    public static $DEFAULT_FORMAT = 'rfc2822';
    //array with formats here

    public function format($format=null){
        return parent::format(self::get_format($format));
    }

    public static function get_format($format=null){
        //get default format if nothing is provided
    }

    public function __toString(){
        //gets called when you use the object as a string
        return $this->format();
    }
}

다른 팁

You can do this globally

Code-Snippet

ActiveRecord\Connection::$datetime_format = 'Y-m-d H:i:s';
ActiveRecord\DateTime::$DEFAULT_FORMAT = 'db';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top