[Dbix-class] format DATE & TIMESTAMP columns
orasnita at gmail.com
Sun Jul 26 10:05:41 GMT 2009
From: "Alex" <capfan at gmx.de>
> Hi all!
> I'm displaying a view on a web page. The view contains a timestamp and a
> date field. The database is MySQL 5.0.x.
> As raw values from timestamp fields are no eye candy, I decided to use
> DBIx::Class::InflateColumn::DateTime, using its default formatter to
> the timestamp. Unfortunately, it formats the date column, too. But as the
> date column has no time information, I get something like
> "YYYY-MM-DDT00:00:00". I don't want the time information.
> Usually, I would format the date and timestamp within the sql statement,
> I wanted to try to format it in the ResultClass. So, how do I do that?
I use to do it in the template, but I use TT which can do more than H:T:C
At the top of the template:
[% MACRO d(date) BLOCK; date.set_locale(lang).strftime('%e %b %Y');END -%]
Then in the template I just need to use
[% d(date_field) %]
which formats the date depending on the pattern I used in the d() macro at
the top of the template.
(lang is a variable that holds the language name - 'en', 'fr'...)
You can apply this in the program too, using:
my $formatted_date = $date_field->strftime('the format you want your date to
or also specify a locale:
my $formatted_locale_date = $date_field->set_locale('ro')->strftime('the
format you want');
Or you can apply any method from the DateTime class like:
my $localized_month_name = $date_field->set_locale('ro')->month_name;
More information about the DBIx-Class