package Rose::HTML::Form::Field::Date;

use strict;

use base 'Rose::HTML::Form::Field::DateTime';

our $VERSION = '0.606';

sub inflate_value
  my($self, $date) = @_;
  return undef  unless(ref $date || (defined $date && length $date));
  $date = $self->date_parser->parse_datetime($date);
  return $date  unless(UNIVERSAL::isa($date, 'DateTime'));
  $date->set(hour => 0, minute => 0, second => 0, nanosecond => 0);
  return $date;

sub init_output_format { '%Y-%m-%d' }



=head1 NAME

Rose::HTML::Form::Field::Date - Text field that inflates valid dates into L<DateTime> objects.


    $field =
        label   => 'Date',
        name    => 'date', 
        default => '12/31/2002');

    print $field->internal_value; # "2002-12-31T00:00:00"
    print $field->output_value;   # "2002-12-31"


    # "Could not parse date: blah"
    $field->validate or warn $field->error;


    $dt = $field->internal_value; # DateTime object

    print $dt->day_name; # Wednesday

    print $field->html;


L<Rose::HTML::Form::Field::Date> is a subclass of L<Rose::HTML::Form::Field::DateTime> that handles dates, but not times.  (The time is always forced to be 00:00:00.)  Valid input is converted to the format "YYYY-MM-DD" on output.

See the L<Rose::HTML::Form::Field::DateTime> documetation for more information.

=head1 AUTHOR

John C. Siracusa (

=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.