Rose::HTML::Form::Field::DateTime::EndDate - Text field for an "end date" in a date range.


Rose-HTML-Objects documentation Contained in the Rose-HTML-Objects distribution.

Index


Code Index:

NAME

Top

Rose::HTML::Form::Field::DateTime::EndDate - Text field for an "end date" in a date range.

SYNOPSIS

Top

    $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;
    ...

DESCRIPTION

Top

Rose::HTML::Form::Field::DateTime::EndDate is a subclass of Rose::HTML::Form::Field::DateTime 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.

AUTHOR

Top

John C. Siracusa (siracusa@gmail.com)

LICENSE

Top

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.


Rose-HTML-Objects documentation Contained in the Rose-HTML-Objects distribution.

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__