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.