> -----Original Message-----
> From: Garrett, Philip (MAN-Corporate)
[mailto:[EMAIL PROTECTED] 
> Sent: Friday, March 17, 2006 7:14 PM
> To: datetime@perl.org
> Subject: Formatting dates for locales/time zones
> 
> Hi list. Apologies in advance if the formatting is skewed -- using
> Outlook web access.
>  
> Is there a way to format dates for a specific locale or time zone
without actually modifying the DateTime object itself?  For example, if
I have a function whose job is to return a formatted date, given a
DateTime, locale and time zone:
>  
> sub locale_date {
>     my ($date,$locale,$time_zone) = @_;
>     my $fmt = DateTime::Format::Strptime->new(pattern => '%b %Y',
>         locale => $locale, time_zone => $time_zone);
>     return $fmt->format_datetime($date); }
>  
> $d = DateTime->now;
> $str = locale_date($d, 'fr_FR', 'Europe/Paris'); # "Mar 2005"
> 
> $d = DateTime->now(locale => 'fr_FR', time_zone => 'Europe/Paris');
> $str = locale_date($d, 'fr_FR', 'Europe/Paris'); # "mars 2006"
> 
> Is there a way to change this code to use the correct locale for the
> formatting, but without modifying the original date? (And without
> cloning it -- that's cheating ;-) The locale doesn't seem so much a
> property of the date, but of the way it's being presented.

So is cloning really the only way to do this?

Philip

Reply via email to