| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
HTML::FormFu::Deflator::Strftime - Strftime deflator
$form->deflator( Strftime => 'start_time' )
->strftime( '%d/%m/%Y' );
---
elements:
- type: Text
inflators:
- type: DateTime
parser:
strptime: "%Y/%m/%d"
deflator:
- type: Strftime
strftime: "%Y/%m/%d"
Strftime deflator for DateTime objects.
When you redisplay a form to the user following an invalid submission, any fields with DateTime inflators will stringify to something like '1970-01-01T00:00:00'. In most cases it makes more sense to use the same format you've asked the user for. This deflator allows you to specify a more suitable and user-friendly format.
This deflator calls DateTime's strftime method. Possible values for
the format string are documented at
http://search.cpan.org/dist/DateTime/lib/DateTime.pm#strftime_Patterns.
If you set the form's locale (see locale in HTML::FormFu) this is set on the DateTime object. Now you can use %x to get the default date or %X for the default time for the object's locale.
Carl Franks, cfranks@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-FormFu documentation | Contained in the HTML-FormFu distribution. |
package HTML::FormFu::Deflator::Strftime; use Moose; extends 'HTML::FormFu::Deflator'; has strftime => ( is => 'rw', traits => ['Chained'] ); sub deflator { my ( $self, $value ) = @_; my $return; eval { my $locale = $self->locale; $value->set_locale($locale) if defined $locale; }; eval { $return = $value->strftime( $self->strftime ) }; if ($@) { $return = $value; } return $return; } __PACKAGE__->meta->make_immutable; 1; __END__