2010-11-12 4 views

Répondre

2

La méthode magique __toString ne peut être déclarée que pour les classes/objets. Puisque mktime renvoie un entier, vous ne pouvez pas le surcharger.

Il existe la classe DateTime depuis PHP 5.2. Techniquement, vous pouvez créer votre propre MyDateTime qui étend le built-in (ou simplement créer votre propre classe DateTime) et y surcharger __toString, pour représenter n'importe quelle chaîne de date/heure par défaut que vous voulez.

Si vous voulez coller avec mktime (qui, par ailleurs, retourne le même que time quand aucun argument ne lui), vous pouvez utiliser date ou stftime:

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

Vérifiez la fonction date en PHP. Les exemples 3 et 4 s'adaptent bien à ce que vous demandez.

0

S'appuyant sur la réponse d'Evan: même si vous n'avez pas PHP 5.2.0 ou supérieur, la fonction date() formatera l'heure.

1

Vous pouvez envelopper le traitement de la date de PHP dans votre propre classe personnalisée pour obtenir une coutume valeur __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); 
    } 
} 

Vous pouvez ensuite appeler cela comme suit:

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

Si vous vouliez faire ceci avec des dates personnalisées, vous devriez écrire la fonctionnalité pour les passer du constructeur à l'appel mktime. Cela ne devrait pas être difficile.

Questions connexes