Time-Object
view release on metacpan or search on metacpan
_mktime($time, 1);
}
sub gmtime {
my $time = shift;
$time = time if (!defined $time);
_mktime($time, 0);
}
sub new {
my $class = shift;
my ($time) = @_;
my $self;
if (defined($time)) {
$self = &localtime($time);
}
elsif (ref($class) && $class->isa(__PACKAGE__)) {
$self = _mktime($class->[c_epoch], $class->[c_islocal]);
}
else {
$self = &localtime();
}
return bless $self, $class;
}
sub parse {
my $proto = shift;
my $class = ref($proto) || $proto;
my @components;
if (@_ > 1) {
@components = @_;
}
else {
@components = shift =~ /(\d+)$DATE_SEP(\d+)$DATE_SEP(\d+)(?:(?:T|\s+)(\d+)$TIME_SEP(\d+)(?:$TIME_SEP(\d+)))/;
@components = reverse(@components[0..5]);
}
return $class->new(_strftime("%s", @components));
}
sub _mktime {
my ($time, $islocal) = @_;
my @time = $islocal ?
CORE::localtime($time)
:
CORE::gmtime($time);
wantarray ? @time : bless [@time, $time, $islocal], 'Time::Object';
}
sub import {
# replace CORE::GLOBAL localtime and gmtime if required
my $class = shift;
my %params;
map($params{$_}++,@_,@EXPORT);
if (delete $params{':override'}) {
$class->export('CORE::GLOBAL', keys %params);
}
else {
$class->export((caller)[0], keys %params);
}
}
## Methods ##
sub sec {
my $time = shift;
$time->[c_sec];
}
*second = \&sec;
sub min {
my $time = shift;
$time->[c_min];
}
*minute = \&minute;
sub hour {
my $time = shift;
$time->[c_hour];
}
sub mday {
my $time = shift;
$time->[c_mday];
}
*day_of_month = \&mday;
sub mon {
my $time = shift;
$time->[c_mon] + 1;
}
sub _mon {
my $time = shift;
$time->[c_mon];
}
sub month {
my $time = shift;
if (@_) {
return $_[$time->[c_mon]];
}
elsif (@MON_LIST) {
return $MON_LIST[$time->[c_mon]];
}
else {
return $time->strftime('%B');
}
}
*monname = \&month;
sub year {
my $time = shift;
$time->[c_year] + 1900;
}
( run in 2.213 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )