ngcp-panel/lib/NGCP/Panel/Utils/DateTime.pm

50 lines
1.2 KiB

package NGCP::Panel::Utils::DateTime;
use Sipwise::Base;
use DateTime;
use DateTime::Format::ISO8601;
sub current_local {
return DateTime->now(
time_zone => DateTime::TimeZone->new(name => 'local')
);
}
sub epoch_local {
my $epoch = shift;
return DateTime->from_epoch(
time_zone => DateTime::TimeZone->new(name => 'local'),
epoch => $epoch,
);
}
sub from_string {
my $s = shift;
# if date is passed like xxxx-xx (as from monthpicker field), add a day
$s = $s . "-01" if($s =~ /^\d{4}\-\d{2}$/);
$s = $s . "T00:00:00" if($s =~ /^\d{4}\-\d{2}-\d{2}$/);
# just for convenience, if date is passed like xxxx-xx-xx xx:xx:xx,
# convert it to xxxx-xx-xxTxx:xx:xx
$s =~ s/^(\d{4}\-\d{2}\-\d{2})\s+(\d.+)$/$1T$2/;
my $ts = DateTime::Format::ISO8601->parse_datetime($s);
$ts->set_time_zone( DateTime::TimeZone->new(name => 'local') );
return $ts;
}
sub new_local {
my %params;
@params{qw/year month day hour minute second nanosecond/} = @_;
foreach(keys %params){
!defined $params{$_} and delete $params{$_};
}
return DateTime->new(
time_zone => DateTime::TimeZone->new(name => 'local'),
%params,
);
}
1;
# vim: set tabstop=4 expandtab: