我们可以为日期的__toString()方法设置默认日期格式吗?

时间:2010-11-12 16:12:42

标签: php datetime

例如我有一个日期:

$date = mktime();

在项目中,我使用了很多地方

echo $date

在这种情况下,我们可以更改日期格式吗?我们怎么做到?

5 个答案:

答案 0 :(得分:2)

__toString魔术方法只能为类/对象声明。由于mktime返回一个整数,因此不能重载它。

自PHP 5.2起,有DateTime类。从技术上讲,您可以创建自己的MyDateTime扩展内置的({或者简单地创建自己的DateTime类)并在那里重载__toString,以表示您想要的任何默认日期/时间字符串。

如果你想坚持使用mktime(当没有传递任何参数时,返回与time相同),你可以使用date或{{1 }}:

stftime

答案 1 :(得分:1)

您可以将PHP日期处理包装在您自己的自定义类中,以实现自定义__toString()值:

class MyDate
{
    private $date;
    private $format = 'r';

    public function __construct()
    {
        $this->date = mktime();
    }

    public function setFormat($format)
    {
        $this->format = $format;
    }

    public function __toString()
    {
        return date($this->format, $this->date);
    }
}

然后您可以将其称为以下内容:

$date = new MyDate();
echo $date; // "Fri, 12 Nov 2010 17:21:28 +0100"
$date->setFormat('d/m/Y');
echo $date; // "12/11/2010"

如果您想使用自定义日期执行此操作,则必须编写功能以将它们从构造函数传递到mktime调用。这应该不难。

答案 2 :(得分:0)

PHP有一个内置函数来执行此操作:

http://www.php.net/manual/en/datetime.format.php

格式化符号在这里:

http://php.net/manual/en/function.date.php

答案 3 :(得分:0)

查看PHP中的date函数。示例#3和#4可以很好地满足您的要求。

答案 4 :(得分:0)

基于Evan的回复:即使您没有PHP 5.2.0或更高版本,date()函数也会格式化时间。