1

所以似乎 PHP ActiveRecord正在格式化更新时间戳(无论如何对我来说)

当我打印更新的日期时,它显示:

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

我在数据库中的位置:

2013-06-23 20:04:18

只是为了 100% 确定我使用 PDO 来检索记录,它完全显示了我在数据库中看到的格式。

知道为什么会发生这种自动格式化吗?如果有办法纠正它?

谢谢。

编辑

好的,所以我发现了如何操作它:

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

但是,我仍然想知道它为什么会发生,以及是否有办法默认设置它。

4

2 回答 2

1

phpactiverecord 检索它并将其存储在扩展的对象中DateTime

通常你可以->format($yourformat)为任何DateTime对象做,但对于phpactiverecord孩子,你会得到一个默认格式,如果你不提供一个就会被使用。

这个扩展也有一个toString()调用 this 的函数format(),所以你可以得到默认格式(顺便说一下,你可以在同一个类中设置)。

查看DateTime.phpPHPActiveRecord 提供的类以了解更多信息,但会发生以下情况:

 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();
    }
}
于 2013-08-26T06:40:02.827 回答
0

您可以在全球范围内执行此操作

代码片段

ActiveRecord\Connection::$datetime_format = 'Y-m-d H:i:s';
ActiveRecord\DateTime::$DEFAULT_FORMAT = 'db';
于 2015-05-19T13:01:49.717 回答