From: Teto on
Hi,

I'm trying to extends the base class DateTime.
parent::createFromFormat("H.i d.m.Y", $string); returns a DateTime and I
want to convert it into a DateTimePlus (my own extended class). What's the
best way to do this plz ?

Some code:
class DateTimePlus extends DateTime

{
static function setFromGUIDateAndTime($date,$time ){

$string = $time.' '.$date;
//echo 'str:'.$string;
$res = parent::createFromFormat("H.i d.m.Y", $string);
return (DateTimePlus)parent::createFromFormat("H.i d.m.Y", $string);

}


Thk you

matt
From: David Harkness on
Casting does not change an object. You must copy the relevant value(s) from
the object returned into a new DateTimePlus. Since DateTime's constructor
takes only a string, and I assume it won't accept your format directly,
you're better off converting the string into a Unix timestamp and creating a
new object from that. However, I leave that optimization to you. The
following code is sufficient:

$plus = new DateTimePlus();
$plus.setTimestamp(parent::createFromFormat("H.i d.m.Y",
$string).getTimestamp());
return $plus;

David
From: Nathan Rixham on
David Harkness wrote:
> Casting does not change an object. You must copy the relevant value(s) from
> the object returned into a new DateTimePlus. Since DateTime's constructor
> takes only a string, and I assume it won't accept your format directly,

unless you implement __toString I believe (not tested)

> you're better off converting the string into a Unix timestamp and creating a
> new object from that. However, I leave that optimization to you. The
> following code is sufficient:
>
> $plus = new DateTimePlus();
> $plus.setTimestamp(parent::createFromFormat("H.i d.m.Y",
> $string).getTimestamp());
> return $plus;
>
> David
>

From: Andrew Ballard on
On Fri, Oct 8, 2010 at 12:50 PM, Nathan Rixham <nrixham(a)gmail.com> wrote:
> David Harkness wrote:
>>
>> Casting does not change an object. You must copy the relevant value(s)
>> from
>> the object returned into a new DateTimePlus. Since DateTime's constructor
>> takes only a string, and I assume it won't accept your format directly,
>
> unless you implement __toString I believe (not tested)
>

IMO, that would be a truly useful feature to add if you were extending
DateTime anyway.

Andrew