>> But the difference is I'm not really adding functionality, and nothing
>> is happening under the hood to the DateTime object, just a new value
>> will be supplied to the DateTime constructor.
>
> I guess I still don't see how:
> $Strp->format_datetime( $str, { time_zone => $tz1 } );
> $Strp->format_datetime( $str, { time_zone => $tz2 } );
>
> would be so evil.  I want to get a formatted string based on pattern I 
> provided as it would be displayed in the specified time_zone.

How much would you want to be overridable, and set in the constructor
of the DateTime::Format module? How much should we add to this other
than time_zone (format_timezone) ? locale (format_locale)? What about
adding and subtracting duration??

Here is better API idea, why not just make the hash ref to
format_datetime, a huge method wrapper!!!!

sub format_datetime {
        my ( $self, $dt, %method_args ) = @_;
        
        $dt = $dt->clone;
        
        foreach my $m ( keys %method_args ) {
                $m = 'set_time_zone' if $m = 'time_zone';
                warn 'method not available' unless $dt->can( $m );
                warn 'non array ref for args' unless ref $method_args{$m} eq 
'ARRAY';
                $dt->$m( @{$method_args{$m}} );
        }

        ... other code using $dt

}

Then!! You could even go $dtf->format_datetime( $dt, { add => [ months
=> 1 ] } ) ? The reason is because you're simply mutating a copy of
the DateTime object, and this isn't really a good idea idea, even if
it does make your use case a single line or two shorter.

--
Evan Carroll
System Lord of the Internets
http://www.evancarroll.com

Reply via email to