Time::Moment 

use Time::Moment;

my $tm = Time::Moment->new(
    year       => 2015,
    month      => 2,
    day        => 10,
    hour       => 18,
    minute     => 32,
    second     => 0,
);

say "$tm";                         # 2015-02-10T18:32:00Z
say $tm->strftime("%A, %b %d %Y"); # Tuesday, Feb 10 2015
say $tm->day_of_month;             # 10
say $tm->day_of_week;              # 2
say $tm->plus_months(1);           # 2015-03-10T18:32:00Z