If you use a version prior to 5.3 you can make __wakeup and __toString work using the following piece of code.
<?php
class ExtendedDateTime extends DateTime {
private $_date_time;
public function __toString() {
return $this->format('c'); // format as ISO 8601
}
public function __sleep() {
$this->_date_time = $this->format('c');
return array('_date_time');
}
public function __wakeup() {
$this->__construct($this->_date_time);
}
}
?>
Hope this helps someone.
Be aware, even though this __wake() method exists as of PHP 5.2, DateTime objects don't retain their values when unserialized under PHP 5.2. PHP 5.3 fixes this.