50 lines
1.2 KiB
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:
|