package Rose::HTML::Form::Field::DateTime::EndDate; use strict; use base 'Rose::HTML::Form::Field::DateTime'; our $VERSION = '0.606'; sub inflate_value { my($self) = shift; my $date = $self->SUPER::inflate_value(@_); return $date unless(UNIVERSAL::isa($date, 'DateTime')); no warnings; # Pin to the last second of the day if no time is set $date->set(hour => 23, minute => 59, second => 59, nanosecond => 999999999) unless($self->input_value_filtered =~ /\d:\d|[ap]\.?m/i); return $date; } 1; __END__ =head1 NAME Rose::HTML::Form::Field::DateTime::EndDate - Text field for an "end date" in a date range. =head1 SYNOPSIS $field = Rose::HTML::Form::Field::DateTime::EndDate->new( label => 'Date', name => 'date', default => '12/31/2002'); print $field->internal_value; # "2002-12-31T23:59:59" print $field->output_value; # "2002-12-31 11:59:59 PM" $field->input_value('blah'); # "Could not parse date: blah" $field->validate or warn $field->error; $field->input_value('4/30/1980 5:30 p.m.'); $dt = $field->internal_value; # DateTime object print $dt->hour; # 17 print $dt->day_name; # Wednesday print $field->html; ... =head1 DESCRIPTION L is a subclass of L that pins the time to the very last nanosecond of the specified date (i.e., 23:59:59.999999999) if the time is left unspecified. =head1 AUTHOR John C. Siracusa (siracusa@gmail.com) =head1 LICENSE Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.