NAME
Types::DateTime - type constraints and coercions for datetime objects
SYNOPSIS
package FroobleGala;
use Moose;
use Types::DateTime -all;
has start_date => (
is => 'ro',
isa => DateTimeUTC->plus_coercions( Format['ISO8601'] ),
coerce => 1,
);
DESCRIPTION
Types::DateTime is a type constraint library suitable for use with Moo/Moose attributes, Kavorka sub signatures, and so forth.
Types
This module provides some type constraints broadly compatible with those provided by MooseX::Types::DateTime, plus a couple of extra type constraints.
DateTime
-
A class type for DateTime. Coercions from:
- from
Num
-
Uses "from_epoch" in DateTime. Floating values will be used for sub-second precision, see DateTime for details.
- from
HashRef
-
Calls "new" in DateTime or "from_epoch" in DateTime as appropriate, passing the hash as arguments.
- from
Now
-
Uses "now" in DateTime.
- from
InstanceOf['DateTime::Tiny']
-
Inflated using "DateTime" in DateTime::Tiny.
- from
Duration
-
A class type for DateTime::Duration. Coercions from:
- from
Num
-
Uses "new" in DateTime::Duration and passes the number as the
seconds
argument. - from
HashRef
-
Calls "new" in DateTime::Duration with the hash entries as arguments.
- from
Locale
-
A class type for DateTime::Locale. Coercions from:
- from
Str
-
The string is treated as a language tag (e.g.
en
orhe_IL
) and given to "load" in DateTime::Locale. - from
InstanceOf['Locale::Maketext']
-
The
Locale::Maketext/language_tag
attribute will be used with "load" in DateTime::Locale.
- from
TimeZone
-
A class type for DateTime::TimeZone. Coercions from:
- from
Str
-
Treated as a time zone name or offset. See "USAGE" in DateTime::TimeZone for more details on the allowed values.
Delegates to "new" in DateTime::TimeZone with the string as the
name
argument.
- from
Now
-
Type constraint with only one allowed value, the string "now".
This is exported for compatibility with MooseX::Types::DateTime, which exports such a constraint, even though it is not documented.
DateTimeWithZone
-
A subtype of
DateTime
for objects with a defined (non-floating) time zone.This type constraint inherits its coercions from
DateTime
. DateTimeWithZone[`a]
-
The
DateTimeWithZone
type constraint may be parameterized with a DateTime::TimeZone object, or a string that can be coerced into one.has start_date => ( is => 'ro', isa => DateTimeWithZone['Europe/London'], coerce => 1, );
This type constraint inherits its coercions from
DateTime
, and will additionally call "set_time_zone" in DateTime to shift objects into the correct timezone. DateTimeUTC
-
Shortcut for
DateTimeWithZone["UTC"]
.
Named Coercions
It is hoped that Type::Tiny will help avoid the proliferation of modules like MooseX::Types::DateTimeX, MooseX::Types::DateTime::ButMaintained, and MooseX::Types::DateTime::MoreCoercions. It makes it very easy to add coercions to a type constraint at the point of use:
has start_date => (
is => 'ro',
isa => DateTime->plus_coercions(
InstanceOf['MyApp::DT'] => sub { $_->to_DateTime }
),
coerce => 1,
);
Even easier, this module exports some named coercions.
Format[`a]
-
May be passed an object providing a
parse_datetime
method, or a class name from theDateTime::Format::
namespace (upon whichnew
will be called).For example:
DateTime->plus_coercions( Format['ISO8601'] )
Or:
DateTimeUTC->plus_coercions( Format[ DateTime::Format::Natural->new(lang => 'en') ] )
Strftime[`a]
-
A pattern for serializing a DateTime object into a string using "strftime" in DateTime.
Str->plus_coercions( Strftime['%a %e %b %Y'] );
ToISO8601
-
A coercion for serializing a DateTime object into a string using "iso8601" in DateTime.
Str->plus_coercions( ToISO8601 );
BUGS
Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Types-DateTime.
SEE ALSO
MooseX::Types::DateTime, Type::Tiny::Manual, DateTime, DateTime::Duration, DateTime::Locale, DateTime::TimeZone.
AUTHOR
Toby Inkster <tobyink@cpan.org>.
COPYRIGHT AND LICENCE
This software is copyright (c) 2014, 2017 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.