NAME

MooX::Types::MooseLike::DateTime - a DateTime type for Moo

SYNOPSIS

package Person;

use Moo;
use DateTime;
use MooX::Types::MooseLike::DateTime qw/DateAndTime/;

has birthdate => (
  isa     => DateAndTime,
  is      => 'ro',
  default => sub { DateTime->today }
);

TYPES

DateAndTime

A DateTime object.

DateTime

A DateTime object. Exactly the same as the DateAndTime type. If using this type and the DateTime module in your package, you'll have to alias DateTime to something else.

package Person;

use Moo;
use MooX::Types::MooseLike::DateTime qw/DateTime/;
use aliased 'DateTime' => 'DT';

has birthdate => (
  isa     => DateTime,
  is      => 'ro',
  default => sub { DT->today }
);

TIPS

Coercion
use DateTime::Format::Strptime;
use Scalar::Util qw/blessed/;

has birthdate => (
  isa     => DateAndTime,
  is      => 'ro',
  default => sub { DateTime->today },
  coerce  => sub {
      (blessed($_[0]) and (blessed($_[0]) eq 'DateTime'))
    ? $_[0]
    : DateTime::Format::Strptime->new(pattern => '%F %T')->parse_datetime($_[0])
  }
);

AUTHOR

Luke Triantafyllidis <ltriant@cpan.org>

REPOSITORY

https://github.com/ltriant/MooX-Types-MooseLike-DateTime

SEE ALSO

MooX::Types::MooseLike, DateTime

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.