> -----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