2010-11-12 77 views

回答

2

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

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

如果你想坚持mktime(其中委托的方式,返回一样time时没有参数传递给它),你可以使用datestftime

$dateTime = date('Y-m-d H:i:s', $time); 
$dateTime = strftime('%Y-%m-%d %H:%M:%S', $time); 
0

退房的date功能在PHP。示例#3和#4可以很好地满足您的要求。

0

建立在Evan的回应之上:即使您没有PHP 5.2.0或更高版本,date()函数也会格式化时间。

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调用。这应该不难。