Template::Plugin::TimeDate - Template::Toolkit plugin to parse/format dates using TimeDate
[% USE TimeDate %]
# get current time, as "seconds since the epoch"
[% TimeDate.now %]
# parse date string and show in default format (ISO8601)
[% TimeDate.parse('2007-09-02 12:34:56 PDT') %]
# parse date string with explicit time zone
[% TimeDate.parse('2007-09-02 12:34:56', 'EDT') %]
# get current time, with custom format
[% TimeDate.format('%b %e %Y @ %l:%M %p') %]
# parse/display
[% USE mydate = TimeDate('2007-09-02 12:34:56 PDT') %]
[% mydate.format('%b %e %Y @ %l:%M %p') %]
# method chaining
[% USE mydate = TimeDate %]
[% mydate.parse('2007-09-02 12:34:56 PDT').format('%Y-%m-%d %H:%M:%S %z') %]Template::Plugin::TimeDate is a Template::Toolkit plug-in that makes of
the Date::Parse and Date::Format modules from the TimeDate
distribution, to help deal with parsing/formatting dates.
Why another date/time plug-in? Template::Plugin::Date doesn't handle output
in different timezones, and Template::Plugin::DateTime didn't give me a means
of easily parsing dates before turning them into DateTime objects. I'd been
using the Date::Parse module elsewhere to parse dates, and so this plug-in
was built to help capture the parse/format cycle that I wanted to use in my
templates.
The plug-in should be loaded via the USE directive:
[% USE TimeDate %]
This creates a plug-in object with the default name of 'TimeDate'. An alternate name can be specified such as:
[% USE mydate = TimeDate %]-
new(string)
Creates a new TimeDate plug-in object, returning it to the caller. An optional date/time string may be passed in, which is parsed automatically.
-
now
Sets the current time to "now", and returns it as "the number of seconds since the epoch".
-
epoch
Returns the currently set time as "the number of seconds since the epoch". If a date/time hasn't explicitly been parsed, we default to the current time.
-
parse(string, zone)
Parses the given date/time
stringand sets that as the current time value for further operations. An optional timezoneis used if there is no time zone information present in the provided date string. -
str2time(string, zone)
An alternate name for the
parsemethod above. -
format(format, zone)
Formats the current time value using the given strftime
format, optionally converting it into the given timezone. If a date/time hasn't explicitly been parsed, we default to the current time.You may also refer to this method as
time2str; its original name from theDate::Formatmodule. -
time2str(format, zone)
An alternate name for the
formatmethod above. -
stringify
Stringifies the object, in ISO8601 format (%Y-%m-%d %H:%M:%S).
This method is overloaded, so that simply turning the TimeDate object into a string will output it in ISO8601 format.
Graham TerMarsch (cpan@howlingfrog.com)
Copyright (C) 2007, Graham TerMarsch. All Rights Reserved.
This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.