NAME
DateTimeX::Web - DateTime factory for web apps
SYNOPSIS
use DateTimeX::Web
# create a factory.
my $dtx = DateTimeX::Web->new(time_zone => 'Asia/Tokyo');
# then, grab a DateTime object from there.
my $obj = $dtx->now;
# with arguments for a DateTime constructor.
my $obj = $dtx->from(year => 2008, month => 2, day => 9);
# or with epoch (you don't need 'epoch =>' as it's obvious).
my $obj = $dtx->from_epoch(time);
# or with a WWWC datetime format string.
my $obj = $dtx->from_rss('2008-02-09T01:00:02');
# actually you can use any Format plugins.
my $obj = $dtx->parse_as(MySQL => '2008-02-09 01:00:02');
# of course you may need to parse with strptime.
my $obj = $dtx->parse('%Y-%m-%d', $string);
# you may want to create a datetime string for HTTP headers.
my $str = $dtx->for_http;
# or for emails (you can pass an arbitrary DateTime object).
my $str = $dtx->for_mail($dt);
# or for database (with arguments for a DateTime constructor).
my $str = $dtx->for_mysql(year => 2007, month => 3, day => 3);
# actually you can use any Format plugins.
my $str = $dtx->render_as(MySQL => $dt);
# you want finer control?
my $str = $dtx->format('mysql')->format_date($dt);
DESCRIPTION
The DateTime framework is quite useful and complete. However, sometimes it's a bit too strict and cumbersome. Also, we usually need to load too many common DateTime components when we build a web application. That's not DRY.
So, here's a factory to make it sweet. If you want more chocolate or cream, help yourself. The DateTime framework boasts a variety of flavors.
METHODS
new
creates a factory object. If you pass a hash, or a hash reference, it will be passed to a DateTime constructor. You usually want to provide a sane "time_zone" option.
Optionally, you can pass an "on_error" option ("ignore"/"croak"/some code reference) to the constructor. DateTimeX::Web croaks by default when DateTime spits an error. If "ignore" is set, DateTimeX::Web would ignore the error and return undef. If you want finer control, provide a code reference.
format
takes a formatter's base name and returns the corresponding DateTime::Format:: object. You can pass an optional formatter package name/object to replace the previous formatter (or to add a new one).
time_zone, locale
returns the current time zone/locale object of the factory, which would be passed to every DateTime object it creates. You can pass an optional time zone/locale string/object to replace.
METHODS TO GET A DATETIME OBJECT
now, today, from_epoch, from_object, from_day_of_year, last_day_of_month
returns a DateTime object as you expect.
from
takes arguments for a DateTime constructor and returns a DateTime object. Also, You can pass (epoch => time) pair for convenience.
from_rss, from_wwwc
takes a W3CDTF (ISO 8601) datetime string used by RSS 1.0 etc, and returns a DateTime object.
from_mail, from_rss20
takes a RFC2822 compliant datetime string used by email, and returns a DateTime object.
from_mysql
takes a MySQL datetime string, and returns a DateTime object.
from_http
takes a HTTP datetime string, and returns a DateTime object.
parse_as
takes a name of DateTime::Format plugin and some arguments for it, and returns a DateTime object.
parse, strptime
takes a strptime format string and a datetime string, and returns a DateTime object.
METHODS TO GET A DATETIME STRING
for_rss, for_wwwc
may or may not take a DateTime object (or arguments for a DateTime constructor), and returns a W3CDTF datetime string.
for_mail, for_rss20
the same as above but returns a RFC2822 datetime string.
for_mysql
the same as above but returns a MySQL datetime string.
for_http
the same as above but returns a HTTP datetime string.
render_as
takes a name of DateTime::Format plugin and the same thing(s) as above, and returns a formatted string.
SEE ALSO
DateTime, DateTime::Format::Mail, DateTime::Format::MySQL, DateTime::Format::W3CDFT, DateTime::Format::HTTP, DateTime::Format::Strptime, DateTime::TimeZone, DateTime::Locale
AUTHOR
Kenichi Ishigaki, <ishigaki@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2008 by Kenichi Ishigaki.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.