summaryrefslogtreecommitdiff
path: root/ext/Time
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2001-08-10 23:37:43 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-08-10 23:37:43 +0000
commit2a2bf5f4414cf2a1984ea82a90bfbb2c3384d4e1 (patch)
treee9b696536715a7a8e72661281d73d87ce4d1854a /ext/Time
parenta1866d1bf88d9abb7869ffddc5cb4448a6cb503a (diff)
downloadperl-2a2bf5f4414cf2a1984ea82a90bfbb2c3384d4e1.tar.gz
Decommission Time::Piece; unnecessary Yet Another Time-Date Module.
p4raw-id: //depot/perl@11631
Diffstat (limited to 'ext/Time')
-rw-r--r--ext/Time/Piece/Makefile.PL7
-rw-r--r--ext/Time/Piece/Piece.pm1326
-rw-r--r--ext/Time/Piece/Piece.t330
-rw-r--r--ext/Time/Piece/Piece.xs43
-rw-r--r--ext/Time/Piece/README111
-rw-r--r--ext/Time/Piece/Seconds.pm217
6 files changed, 0 insertions, 2034 deletions
diff --git a/ext/Time/Piece/Makefile.PL b/ext/Time/Piece/Makefile.PL
deleted file mode 100644
index 6682c8d911..0000000000
--- a/ext/Time/Piece/Makefile.PL
+++ /dev/null
@@ -1,7 +0,0 @@
-use ExtUtils::MakeMaker;
-
-WriteMakefile(
- 'NAME' => 'Time::Piece',
- MAN3PODS => {}, # Pods will be built by installman.
- 'VERSION_FROM' => 'Piece.pm',
-);
diff --git a/ext/Time/Piece/Piece.pm b/ext/Time/Piece/Piece.pm
deleted file mode 100644
index 4a3fb09bc0..0000000000
--- a/ext/Time/Piece/Piece.pm
+++ /dev/null
@@ -1,1326 +0,0 @@
-package Time::Piece;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-
-require Exporter;
-require DynaLoader;
-use Time::Seconds;
-use Carp;
-
-@ISA = qw(Exporter DynaLoader);
-
-@EXPORT = qw(
- localtime
- gmtime
-);
-
-@EXPORT_OK = qw(
- strptime
-);
-
-%EXPORT_TAGS = (
- ':override' => 'internal',
- );
-
-$VERSION = '0.13';
-
-bootstrap Time::Piece $VERSION;
-
-my $DATE_SEP = '-';
-my $TIME_SEP = ':';
-my @MON_NAMES = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
-my @WDAY_NAMES = qw(Sun Mon Tue Wed Thu Fri Sat);
-my @MONTH_NAMES = qw(January February March April May June
- July August September October Novemeber December);
-my @WEEKDAY_NAMES = qw(Sunday Monday Tuesday Wednesday
- Thursday Friday Saturday);
-
-use constant 'c_sec' => 0;
-use constant 'c_min' => 1;
-use constant 'c_hour' => 2;
-use constant 'c_mday' => 3;
-use constant 'c_mon' => 4;
-use constant 'c_year' => 5;
-use constant 'c_wday' => 6;
-use constant 'c_yday' => 7;
-use constant 'c_isdst' => 8;
-use constant 'c_epoch' => 9;
-use constant 'c_islocal' => 10;
-
-sub localtime {
- my $time = shift;
- $time = time if (!defined $time);
- _mktime($time, 1);
-}
-
-sub gmtime {
- my $time = shift;
- $time = time if (!defined $time);
- _mktime($time, 0);
-}
-
-sub new {
- my $proto = shift;
- my $class = ref($proto) || $proto;
- my $time = shift;
-
- my $self;
-
- if (defined($time)) {
- $self = &localtime($time);
- }
- elsif (ref($proto) && $proto->isa('Time::Piece')) {
- $self = _mktime($proto->[c_epoch], $proto->[c_islocal]);
- }
- else {
- $self = &localtime();
- }
-
- return bless $self, $class;
-}
-
-sub _mktime {
- my ($time, $islocal) = @_;
- my @time = $islocal ?
- CORE::localtime($time)
- :
- CORE::gmtime($time);
- wantarray ? @time : bless [@time, $time, $islocal], 'Time::Piece';
-}
-
-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 s {
- my $time = shift;
- $time->[c_sec];
-}
-
-*sec = \&s;
-*second = \&s;
-
-sub min {
- my $time = shift;
- $time->[c_min];
-}
-
-*minute = \&min;
-
-sub h {
- my $time = shift;
- $time->[c_hour];
-}
-
-*hour = \&h;
-
-sub d {
- my $time = shift;
- $time->[c_mday];
-}
-
-*mday = \&d;
-*day_of_month = \&d;
-
-sub mon {
- my $time = shift;
- $time->[c_mon] + 1;
-}
-
-sub _mon {
- my $time = shift;
- $time->[c_mon];
-}
-
-sub has_mon_names {
- my $time = shift;
- return 0;
-}
-
-sub monname {
- my $time = shift;
- if (@_) {
- return $_[$time->[c_mon]];
- }
- elsif ($time->has_mon_names) {
- return $time->mon_name($time->[c_mon]);
- }
- return $MON_NAMES[$time->[c_mon]];
-}
-
-sub has_month_names {
- my $time = shift;
- return 0;
-}
-
-sub monthname {
- my $time = shift;
- if (@_) {
- return $_[$time->[c_mon]];
- }
- elsif ($time->has_month_names) {
- return $time->month_name($time->[c_mon]);
- }
- return $MONTH_NAMES[$time->[c_mon]];
-}
-
-*month = \&monthname;
-
-sub y {
- my $time = shift;
- $time->[c_year] + 1900;
-}
-
-*year = \&y;
-
-sub _year {
- my $time = shift;
- $time->[c_year];
-}
-
-sub wday {
- my $time = shift;
- $time->[c_wday] + 1;
-}
-
-sub _wday {
- my $time = shift;
- $time->[c_wday];
-}
-
-*day_of_week = \&_wday;
-
-sub has_wday_names {
- my $time = shift;
- return 0;
-}
-
-sub wdayname {
- my $time = shift;
- if (@_) {
- return $_[$time->[c_wday]];
- }
- elsif ($time->has_wday_names) {
- return $time->wday_name($time->[c_mon]);
- }
- return $WDAY_NAMES[$time->[c_wday]];
-}
-
-sub has_weekday_names {
- my $time = shift;
- return 0;
-}
-
-sub weekdayname {
- my $time = shift;
- if (@_) {
- return $_[$time->[c_wday]];
- }
- elsif ($time->has_weekday_names) {
- return $time->weekday_name($time->[c_mon]);
- }
- return $WEEKDAY_NAMES[$time->[c_wday]];
-}
-
-*weekdayname = \&weekdayname;
-*weekday = \&weekdayname;
-
-sub yday {
- my $time = shift;
- $time->[c_yday];
-}
-
-*day_of_year = \&yday;
-
-sub isdst {
- my $time = shift;
- $time->[c_isdst];
-}
-
-*daylight_savings = \&isdst;
-
-# Thanks to Tony Olekshy <olekshy@cs.ualberta.ca> for this algorithm
-sub tzoffset {
- my $time = shift;
-
- my $epoch = $time->[c_epoch];
-
- my $j = sub { # Tweaked Julian day number algorithm.
-
- my ($s,$n,$h,$d,$m,$y) = @_; $m += 1; $y += 1900;
-
- # Standard Julian day number algorithm without constant.
- #
- my $y1 = $m > 2 ? $y : $y - 1;
-
- my $m1 = $m > 2 ? $m + 1 : $m + 13;
-
- my $day = int(365.25 * $y1) + int(30.6001 * $m1) + $d;
-
- # Modify to include hours/mins/secs in floating portion.
- #
- return $day + ($h + ($n + $s / 60) / 60) / 24;
- };
-
- # Compute floating offset in hours.
- #
- my $delta = 24 * (&$j(CORE::localtime $epoch) - &$j(CORE::gmtime $epoch));
-
- # Return value in seconds rounded to nearest minute.
- return Time::Seconds->new( int($delta * 60 + ($delta >= 0 ? 0.5 : -0.5)) * 60);
-}
-
-sub epoch {
- my $time = shift;
- $time->[c_epoch];
-}
-
-sub hms {
- my $time = shift;
- my $sep = @_ ? shift(@_) : $TIME_SEP;
- sprintf("%02d$sep%02d$sep%02d", $time->[c_hour], $time->[c_min], $time->[c_sec]);
-}
-
-*time = \&hms;
-
-sub ymd {
- my $time = shift;
- my $sep = @_ ? shift(@_) : $DATE_SEP;
- sprintf("%d$sep%02d$sep%02d", $time->year, $time->mon, $time->[c_mday]);
-}
-
-*date = \&ymd;
-
-sub mdy {
- my $time = shift;
- my $sep = @_ ? shift(@_) : $DATE_SEP;
- sprintf("%02d$sep%02d$sep%d", $time->mon, $time->[c_mday], $time->year);
-}
-
-sub dmy {
- my $time = shift;
- my $sep = @_ ? shift(@_) : $DATE_SEP;
- sprintf("%02d$sep%02d$sep%d", $time->[c_mday], $time->mon, $time->year);
-}
-
-sub datetime {
- my $time = shift;
- my %seps = (date => $DATE_SEP, T => 'T', time => $TIME_SEP, @_);
- return join($seps{T}, $time->date($seps{date}), $time->time($seps{time}));
-}
-
-# taken from Time::JulianDay
-sub julian_day {
- my $time = shift;
- my ($year, $month, $day) = ($time->year, $time->mon, $time->mday);
- my ($tmp, $secs);
-
- $tmp = $day - 32075
- + 1461 * ( $year + 4800 - ( 14 - $month ) / 12 )/4
- + 367 * ( $month - 2 + ( ( 14 - $month ) / 12 ) * 12 ) / 12
- - 3 * ( ( $year + 4900 - ( 14 - $month ) / 12 ) / 100 ) / 4
- ;
-
- return $tmp;
-}
-
-# Hi Mark-Jason!
-sub mjd {
- return shift->julian_day - 2_400_000.5;
-}
-
-sub week {
- # taken from the Calendar FAQ
- use integer;
- my $J = shift->julian_day;
- my $d4 = ((($J + 31741 - ($J % 7)) % 146097) % 36524) % 1461;
- my $L = $d4 / 1460;
- my $d1 = (($d4 - $L) % 365) + $L;
- return $d1 / 7 + 1;
-}
-
-sub _is_leap_year {
- my $year = shift;
- return (($year %4 == 0) && !($year % 100 == 0)) || ($year % 400 == 0)
- ? 1 : 0;
-}
-
-sub is_leap_year {
- my $time = shift;
- my $year = $time->year;
- return _is_leap_year($year);
-}
-
-my @MON_LAST = qw(31 28 31 30 31 30 31 31 30 31 30 31);
-
-sub month_last_day {
- my $time = shift;
- my $year = $time->year;
- my $_mon = $time->_mon;
- return $MON_LAST[$_mon] + ($_mon == 1 ? _is_leap_year($year) : 0);
-}
-
-use vars qw($_ftime);
-
-$_ftime =
-{
- '%' => sub {
- return "%";
- },
- 'a' => sub {
- my ($format, $time) = @_;
- $time->wdayname();
- },
- 'A' => sub {
- my ($format, $time) = @_;
- $time->weekdayname();
- },
- 'b' => sub {
- my ($format, $time) = @_;
- $time->monname();
- },
- 'B' => sub {
- my ($format, $time) = @_;
- $time->monthname();
- },
- 'c' => sub {
- my ($format, $time) = @_;
- $time->cdate();
- },
- 'C' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", int($time->y() / 100));
- },
- 'd' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->d());
- },
- 'D' => sub {
- my ($format, $time) = @_;
- join("/",
- $_ftime->{'m'}->('m', $time),
- $_ftime->{'d'}->('d', $time),
- $_ftime->{'y'}->('y', $time));
- },
- 'e' => sub {
- my ($format, $time) = @_;
- sprintf("%2d", $time->d());
- },
- 'h' => sub {
- my ($format, $time, @rest) = @_;
- $time->monname(@rest);
- },
- 'H' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->h());
- },
- 'I' => sub {
- my ($format, $time) = @_;
- my $h = $time->h();
- sprintf("%02d", $h == 0 ? 12 : ($h < 13 ? $h : $h % 12));
- },
- 'j' => sub {
- my ($format, $time) = @_;
- sprintf("%03d", $time->yday());
- },
- 'm' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->mon());
- },
- 'M' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->min());
- },
- 'n' => sub {
- return "\n";
- },
- 'p' => sub {
- my ($format, $time) = @_;
- my $h = $time->h();
- $h == 0 ? 'pm' : ($h < 13 ? 'am' : 'pm');
- },
- 'r' => sub {
- my ($format, $time) = @_;
- join(":",
- $_ftime->{'I'}->('I', $time),
- $_ftime->{'M'}->('M', $time),
- $_ftime->{'S'}->('S', $time)) .
- " " . $_ftime->{'p'}->('p', $time);
- },
- 'R' => sub {
- my ($format, $time) = @_;
- join(":",
- $_ftime->{'H'}->('H', $time),
- $_ftime->{'M'}->('M', $time));
- },
- 'S' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->s());
- },
- 't' => sub {
- return "\t";
- },
- 'T' => sub {
- my ($format, $time) = @_;
- join(":",
- $_ftime->{'H'}->('H', $time),
- $_ftime->{'M'}->('M', $time),
- $_ftime->{'S'}->('S', $time));
- },
- 'u' => sub {
- my ($format, $time) = @_;
- ($time->wday() + 5) % 7 + 1;
- },
- # U taken care by libc
- 'V' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->week());
- },
- 'w' => sub {
- my ($format, $time) = @_;
- $time->_wday();
- },
- # W taken care by libc
- 'x' => sub {
- my ($format, $time) = @_;
- join("/",
- $_ftime->{'m'}->('m', $time),
- $_ftime->{'d'}->('d', $time),
- $_ftime->{'y'}->('y', $time));
- },
- 'y' => sub {
- my ($format, $time) = @_;
- sprintf("%02d", $time->y() % 100);
- },
- 'Y' => sub {
- my ($format, $time) = @_;
- sprintf("%4d", $time->y());
- },
- # Z taken care by libc
-};
-
-sub has_ftime {
- my ($format) = @_;
- exists $_ftime->{$format};
-}
-
-sub has_ftimes {
- keys %$_ftime;
-}
-
-sub delete_ftime {
- delete $_ftime->{@_};
-}
-
-sub ftime {
- my ($format) = $_[0];
- if (@_ == 1) {
- return $_ftime->{$format};
- } elsif (@_ == 2) {
- if (ref $_[0] eq 'CODE') {
- $_ftime->{$format} = $_[1];
- } else {
- require Carp;
- Carp::croak "ftime: second argument not a code ref";
- }
- } else {
- require Carp;
- Carp::croak "ftime: want one or two arguments";
- }
-}
-
-sub _ftime {
- my ($format, $time, @rest) = @_;
- if (has_ftime($format)) {
- # We are passing format to the anonsubs so that
- # one can share the same sub among several formats.
- return $_ftime->{$format}->($format, $time, @rest);
- }
- # If we don't know it, pass it down to the libc layer.
- # (In other words, cheat.)
- # This pays for for '%Z', though, and for all the
- # locale-specific %Ex and %Oy formats.
- return $time->_strftime("%$format");
-}
-
-sub strftime {
- my $time = shift;
- my $format = @_ ? shift(@_) : "%a, %d %b %Y %H:%M:%S %Z";
- $format =~ s/%(.)/_ftime($1, $time, @_)/ge;
- return $format;
-}
-
-sub _strftime {
- my $time = shift;
- my $format = @_ ? shift(@_) : "%a, %d %b %Y %H:%M:%S %Z";
- return __strftime($format, (@$time)[c_sec..c_isdst]);
-}
-
-use vars qw($_ptime);
-
-$_ptime =
-{
- '%' => sub {
- $_[1] =~ s/^%// && $1;
- },
- # a unimplemented
- # A unimplemented
- # b unimplemented
- # B unimplemented
- # c unimplemented
- 'C' => sub {
- $_[1] =~ s/^(0[0-9])// && $1;
- },
- 'd' => sub {
- $_[1] =~ s/^(0[1-9]|2[0-9]|3[01])// && $1;
- },
- 'D' => sub {
- my %D;
- my $D;
- if (defined ($D = $_ptime->{'m'}->($_[0], $_[1]))) {
- $D{m} = $D;
- } else {
- return;
- }
- $_[1] =~ s:^/:: || return;
- if (defined ($D = $_ptime->{'d'}->($_[0], $_[1]))) {
- $D{d} = $D;
- } else {
- return;
- }
- $_[1] =~ s:^/:: || return;
- if (defined ($D = $_ptime->{'y'}->($_[0], $_[1]))) {
- $D{y} = $D;
- } else {
- return;
- }
- return { %D };
- },
- 'e' => sub {
- $_[1] =~ s/^( [1-9]|2[0-9]|3[01])// && $1;
- },
- # h unimplemented
- 'H' => sub {
- $_[1] =~ s/^([0-1][0-9]|2[0-3])// && $1;
- },
- 'I' => sub {
- $_[1] =~ s/^(0[1-9]|1[012])// && $1;
- },
- 'j' => sub {
- $_[1] =~ s/^([0-9][0-9][0-9])// && $1 >= 1 && $1 <= 366 && $1;
- },
- 'm' => sub {
- $_[1] =~ s/^(0[1-9]|1[012])// && $1;
- },
- 'M' => sub {
- $_[1] =~ s/^([0-5][0-9])// && $1;
- },
- 't' => sub {
- $_[1] =~ s/^\n// && $1;
- },
- 'p' => sub {
- $_[1] =~ s/^(am|pm)// && $1;
- },
- 'r' => sub {
- my %r;
- my $r;
- if (defined ($r = $_ptime->{'I'}->($_[0], $_[1]))) {
- $r{I} = $r;
- } else {
- return;
- }
- $_[1] =~ s/^:// || return;
- if (defined ($r = $_ptime->{'M'}->($_[0], $_[1]))) {
- $r{M} = $r;
- } else {
- return;
- }
- $_[1] =~ s/^:// || return;
- if (defined ($r = $_ptime->{'S'}->($_[0], $_[1]))) {
- $r{S} = $r;
- } else {
- return;
- }
- $_[1] =~ s/^ // || return;
- if (defined ($r = $_ptime->{'p'}->($_[0], $_[1]))) {
- $r{p} = $r;
- } else {
- return;
- }
- return { %r };
- },
- 'R' => sub {
- my %R;
- my $R;
- if (defined ($R = $_ptime->{'H'}->($_[0], $_[1]))) {
- $R{H} = $R;
- } else {
- return;
- }
- $_[1] =~ s/^:// || return;
- if (defined ($R = $_ptime->{'M'}->($_[0], $_[1]))) {
- $R{M} = $R;
- } else {
- return;
- }
- return { %R };
- },
- 'S' => sub {
- $_[1] =~ s/^([0-5][0-9])// && $1;
- },
- 't' => sub {
- $_[1] =~ s/^\t// && $1;
- },
- 'T' => sub {
- my %T;
- my $T;
- if (defined ($T = $_ptime->{'H'}->($_[0], $_[1]))) {
- $T{H} = $T;
- } else {
- return;
- }
- $_[1] =~ s/^:// || return;
- if (defined ($T = $_ptime->{'M'}->($_[0], $_[1]))) {
- $T{M} = $T;
- } else {
- return;
- }
- $_[1] =~ s/^:// || return;
- if (defined ($T = $_ptime->{'S'}->($_[0], $_[1]))) {
- $T{S} = $T;
- } else {
- return;
- }
- return { %T };
- },
- # u unimplemented
- # U unimplemented
- # w unimplemented
- # W unimplemented
- 'x' => sub {
- my %x;
- my $x;
- if (defined ($x = $_ptime->{'m'}->($_[0], $_[1]))) {
- $x{m} = $x;
- } else {
- return;
- }
- $_[1] =~ s:^/:: || return;
- if (defined ($x = $_ptime->{'d'}->($_[0], $_[1]))) {
- $x{d} = $x;
- } else {
- return;
- }
- $_[1] =~ s:^/:: || return;
- if (defined ($x = $_ptime->{'y'}->($_[0], $_[1]))) {
- $x{y} = $x;
- } else {
- return;
- }
- return { %x };
- },
- 'y' => sub {
- $_[1] =~ s/^([0-9][0-9])// && $1;
- },
- 'Y' => sub {
- $_[1] =~ s/^([1-9][0-9][0-9][0-9])// && $1;
- },
- # Z too unportable
-};
-
-sub has_ptime {
- my ($format) = @_;
- exists $_ptime->{$format};
-}
-
-sub has_ptimes {
- keys %$_ptime;
-}
-
-sub delete_ptime {
- delete $_ptime->{@_};
-}
-
-sub ptime {
- my ($format) = $_[0];
- if (@_ == 1) {
- return $_ptime->{$format};
- } elsif (@_ == 2) {
- if (ref $_[0] eq 'CODE') {
- $_ptime->{$format} = $_[1];
- } else {
- require Carp;
- Carp::croak "ptime: second argument not a code ref";
- }
- } else {
- require Carp;
- Carp::croak "ptime: want one or two arguments";
- }
-}
-
-sub _ptime {
- my ($format, $stime) = @_;
- if (has_ptime($format)) {
- # We are passing format to the anonsubs so that
- # one can share the same sub among several formats.
- return $_ptime->{$format}->($format, $_[1]);
- }
- die "strptime: unknown format %$format (time '$stime')\n";
-}
-
-sub strptime {
- my $format = shift;
- my $stime = shift;
- my %ptime;
-
- while ($format ne '') {
- if ($format =~ s/^([^%]+)//) {
- my $skip = $1;
- last unless $stime =~ s/^\Q$skip//;
- }
- while ($format =~ s/^%(.)//) {
- my $f = $1;
- my $t = _ptime($f, $stime);
- if (defined $t) {
- if (ref $t eq 'HASH') {
- @ptime{keys %$t} = values %$t;
- } else {
- $ptime{$f} = $t;
- }
- }
- }
- }
-
- return %ptime;
-}
-
-sub wday_names {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__); # strip first if called as a method
- my @old = @WDAY_NAMES;
- if (@_) {
- @WDAY_NAMES = @_;
- }
- return @old;
-}
-
-sub weekday_names {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__); # strip first if called as a method
- my @old = @WEEKDAY_NAMES;
- if (@_) {
- @WEEKDAY_NAMES = @_;
- }
- return @old;
-}
-
-sub mon_names {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__); # strip first if called as a method
- my @old = @MON_NAMES;
- if (@_) {
- @MON_NAMES = @_;
- }
- return @old;
-}
-
-sub month_names {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__); # strip first if called as a method
- my @old = @MONTH_NAMES;
- if (@_) {
- @MONTH_NAMES = @_;
- }
- return @old;
-}
-
-sub time_separator {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__);
- my $old = $TIME_SEP;
- if (@_) {
- $TIME_SEP = $_[0];
- }
- return $old;
-}
-
-sub date_separator {
- shift if ref($_[0]) && $_[0]->isa(__PACKAGE__);
- my $old = $DATE_SEP;
- if (@_) {
- $DATE_SEP = $_[0];
- }
- return $old;
-}
-
-use overload '""' => \&cdate;
-
-sub cdate {
- my $time = shift;
- if ($time->[c_islocal]) {
- return scalar(CORE::localtime($time->[c_epoch]));
- }
- else {
- return scalar(CORE::gmtime($time->[c_epoch]));
- }
-}
-
-use overload
- '-' => \&subtract,
- '+' => \&add;
-
-sub subtract {
- my $time = shift;
- my $rhs = shift;
- die "Can't subtract a date from something!" if shift;
-
- if (ref($rhs) && $rhs->isa('Time::Piece')) {
- return Time::Seconds->new($time->[c_epoch] - $rhs->epoch);
- }
- else {
- # rhs is seconds.
- return _mktime(($time->[c_epoch] - $rhs), $time->[c_islocal]);
- }
-}
-
-sub add {
- warn "add\n";
- my $time = shift;
- my $rhs = shift;
- croak "Invalid rhs of addition: $rhs" if ref($rhs);
-
- return _mktime(($time->[c_epoch] + $rhs), $time->[c_islocal]);
-}
-
-use overload
- '<=>' => \&compare;
-
-sub get_epochs {
- my ($time, $rhs, $reverse) = @_;
- $time = $time->epoch;
- if (UNIVERSAL::isa($rhs, 'Time::Piece')) {
- $rhs = $rhs->epoch;
- }
- if ($reverse) {
- return $rhs, $time;
- }
- return $time, $rhs;
-}
-
-sub compare {
- my ($lhs, $rhs) = get_epochs(@_);
- return $lhs <=> $rhs;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Time::Piece - Object Oriented time objects
-
-=head1 SYNOPSIS
-
- use Time::Piece;
-
- my $t = localtime;
- print "Time is $t\n";
- print "Year is ", $t->year, "\n";
-
-=head1 DESCRIPTION
-
-This module replaces the standard localtime and gmtime functions with
-implementations that return objects. It does so in a backwards
-compatible manner, so that using localtime/gmtime in the way documented
-in perlfunc will still return what you expect.
-
-The module actually implements most of an interface described by
-Larry Wall on the perl5-porters mailing list here:
-http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-01/msg00241.html
-
-=head1 USAGE
-
-After importing this module, when you use localtime(0 or gmtime() in
-scalar context, rather than getting an ordinary scalar string
-representing the date and time, you get a Time::Piece object, whose
-stringification happens to produce the same effect as the localtime()
-and gmtime(0 functions.
-
-There is also a new() constructor provided, which is the same as
-localtime(), except when passed a Time::Piece object, in which case
-it's a copy constructor.
-
-The following methods are available on the object:
-
- $t->s # 0..61
- # 60 and 61: leap second and double leap second
- $t->sec # same as $t->s
- $t->second # same as $t->s
- $t->min # 0..59
- $t->h # 0..24
- $t->hour # same as $t->h
- $t->d # 1..31
- $t->mday # same as $t->d
- $t->mon # 1 = January
- $t->_mon # 0 = January
- $t->monname # Feb
- $t->monthname # February
- $t->month # same as $t->monthname
- $t->y # based at 0 (year 0 AD is, of course 1 BC)
- $t->year # same as $t->y
- $t->_year # year minus 1900
- $t->wday # 1 = Sunday
- $t->day_of_week # 0 = Sunday
- $t->_wday # 0 = Sunday
- $t->wdayname # Tue
- $t->weekdayname # Tuesday
- $t->weekday # same as weekdayname
- $t->yday # also available as $t->day_of_year, 0 = Jan 01
- $t->isdst # also available as $t->daylight_savings
- $t->daylight_savings # same as $t->isdst
-
- $t->hms # 12:34:56
- $t->hms(".") # 12.34.56
- $t->time # same as $t->hms
-
- $t->ymd # 2000-02-29
- $t->date # same as $t->ymd
- $t->mdy # 02-29-2000
- $t->mdy("/") # 02/29/2000
- $t->dmy # 29-02-2000
- $t->dmy(".") # 29.02.2000
- $t->datetime # 2000-02-29T12:34:56 (ISO 8601)
- $t->cdate # Tue Feb 29 12:34:56 2000
- "$t" # same as $t->cdate
-
- $t->epoch # seconds since the epoch
- $t->tzoffset # timezone offset in a Time::Seconds object
-
- $t->julian_day # number of days since Julian period began
- $t->mjd # modified Julian day
-
- $t->week # week number (ISO 8601)
-
- $t->is_leap_year # true if it its
- Time::Piece::_is_leap_year($year) # true if it its
- $t->month_last_day # 28..31
-
- $t->time_separator($s) # set the default separator (default ":")
- $t->date_separator($s) # set the default separator (default "-")
- $t->wday_names(@days) # set the default weekday names, abbreviated
- $t->weekday_names(@days) # set the default weekday names
- $t->mon_names(@days) # set the default month names, abbreviated
- $t->month_names(@days) # set the default month names
-
- $t->strftime($format) # date and time formatting
- $t->strftime() # "Tue, 29 Feb 2000 12:34:56 GMT"
-
- $t->_strftime($format) # same as POSIX::strftime (without the
- # overhead of the full POSIX extension),
- # calls the operating system libraries,
- # as opposed to $t->strftime()
-
- use Time::Piece 'strptime'; # date parsing
- my %p = strptime("%H:%M", "12:34"); # $p{H} and ${M} will be set
-
-=head2 Local Locales
-
-Both wdayname (day) and monname (month) allow passing in a list to use
-to index the name of the days against. This can be useful if you need
-to implement some form of localisation without actually installing or
-using the locales provided by the operating system.
-
- my @weekdays = qw( Dimanche Lundi Merdi Mercredi Jeudi Vendredi Samedi );
-
- my $french_day = localtime->day(@weekdays);
-
-These settings can be overriden globally too:
-
- Time::Piece::weekday_names(@weekdays);
- Time::Piece::wday_names(@wdays);
-
-Or for months:
-
- Time::Piece::month_names(@months);
- Time::Piece::mon_names(@mon);
-
-And locally for months:
-
- print localtime->month(@months);
-
-=head2 Date Calculations
-
-It's possible to use simple addition and subtraction of objects:
-
- use Time::Seconds;
-
- my $seconds = $t1 - $t2;
- $t1 += ONE_DAY; # add 1 day (constant from Time::Seconds)
-
-The following are valid ($t1 and $t2 are Time::Piece objects):
-
- $t1 - $t2; # returns Time::Seconds object
- $t1 - 42; # returns Time::Piece object
- $t1 + 533; # returns Time::Piece object
-
-However adding a Time::Piece object to another Time::Piece object
-will cause a runtime error.
-
-Note that the first of the above returns a Time::Seconds object, so
-while examining the object will print the number of seconds (because
-of the overloading), you can also get the number of minutes, hours,
-days, weeks and years in that delta, using the Time::Seconds API.
-
-=head2 Date Comparisons
-
-Date comparisons are also possible, using the full suite of "<", ">",
-"<=", ">=", "<=>", "==" and "!=".
-
-=head2 YYYY-MM-DDThh:mm:ss
-
-The ISO 8601 standard defines the date format to be YYYY-MM-DD, and
-the time format to be hh:mm:ss (24 hour clock), and if combined, they
-should be concatenated with the date first and with a capital 'T' in
-front of the time.
-
-=head2 Week Number
-
-The I<week number> may be an unknown concept to some readers. The ISO
-8601 standard defines that weeks begin on a Monday and week 1 of the
-year is the week that includes both January the 4th and the first
-Thursday of the year. In other words, if the first Monday of January
-is the 2nd, 3rd, or 4th, the preceding days of the January are part of
-the last week of the preceding year. Week numbers range from 1 to 53.
-
-=head2 strftime method
-
-The strftime() method can be used to format Time::Piece objects for output.
-The argument to strftime() is the format string to be used, for example:
-
- $t->strftime("%H:%M");
-
-will output the hours and minutes concatenated with a colon. The
-available format characters are as in the standard strftime() function
-(unless otherwise indicated the implementation is in pure Perl,
-no operating system strftime() is invoked):
-
-=over 4
-
-=item %%
-
-The percentage character "%".
-
-=item %a
-
-The abbreviated weekday name, e.g. 'Tue'. Note that the abbreviations
-are not necessarily three characters wide in all languages.
-
-=item %A
-
-The weekday name, e.g. 'Tuesday'.
-
-=item %b
-
-The abbreviated month name, e.g. 'Feb'. Note that the abbreviations
-are not necessarily three characters wide in all languages.
-
-=item %B
-
-The month name, e.g. 'February'.
-
-=item %c
-
-The ctime format, or the localtime()/gmtime() format: C<%a %b %m %H:%M:%S %Y>.
-
-(Should be avoided: use $t->timedate instead.)
-
-=item %C
-
-The 'centuries' number, e.g. 19 for the year 1999 and 20 for the year 2000.
-
-=item %d
-
-The zero-filled right-aligned day of the month, e.g. '09' or '10'.
-
-=item %D
-
-C<%m/%d/%d>.
-
-(Should be avoided: use $t->date instead.)
-
-=item %e
-
-The space-filled right-aligned day of the month, e.g. ' 9' or '10'.
-
-=item %h
-
-Same as C<%b>, the abbreviated monthname.
-
-=item %H
-
-The zero-filled right-aligned hours in 24 hour clock, e.g. '09' or '10'.
-
-=item %I
-
-The zero-filled right-aligned hours in 12 hour clock, e.g. '09' or '10'.
-
-=item %j
-
-The zero-filled right-aligned day of the year, e.g. '001' or '365'.
-
-=item %m
-
-The zero-filled right-aligned month number, e.g. '09' or '10'.
-
-=item %M
-
-The zero-filled right-aligned minutes, e.g. '09' or '10'.
-
-=item %n
-
-The newline character "\n".
-
-=item %p
-
-Notice that this is somewhat meaningless in 24 hour clocks.
-
-=item %r
-
-C<%I:%M:%S %p>.
-
-(Should be avoided: use $t->time instead.)
-
-=item %R
-
-C<%H:%M>.
-
-=item %S
-
-The zero-filled right-aligned seconds, e.g. '09' or '10'.
-
-=item %t
-
-The tabulator character "\t".
-
-=item %T
-
-C<%H:%M%S>
-
-(Should be avoided: use $t->time instead.)
-
-=item %u
-
-The day of the week with Monday as 1 (one) and Sunday as 7.
-
-=item %U
-
-The zero-filled right-aligned week number of the year, Sunday as the
-first day of the week, from '00' to '53'.
-
-(Currently taken care by the operating system strftime().)
-
-=item %V
-
-The zero-filled right-aligned week of the year, e.g. '01' or '53'.
-(ISO 8601)
-
-=item %w
-
-The day of the week with Sunday as 0 (zero) and Monday as 1 (one).
-
-=item %W
-
-The zero-filled right-aligned week number of the year, Monday as the
-first day of the week, from '00' to '53'.
-
-(Currently taken care by the operating system strftime().)
-
-=item %x
-
-C<%m/%d/%y>.
-
-(Should be avoided: use $t->date instead.)
-
-=item %y
-
-The zero-filled right-aligned last two numbers of the year, e.g. 99
-for 1999 and 01 for 2001.
-
-(Should be avoided: this is the Y2K bug alive and well.)
-
-=item %Y
-
-The year, e.g. 1999 or 2001.
-
-=item %Z
-
-The timezone name, for example "GMT" or "EET".
-
-(Taken care by the operating system strftime().)
-
-=back
-
-The format C<Z> and any of the C<O*> and C<E*> formats are handled by
-the operating system, not by Time::Piece, because those formats are
-usually rather unportable and non-standard. (For example 'MST' can
-mean almost anything: 'Mountain Standard Time' or 'Moscow Standard Time'.)
-
-=head2 strptime function
-
-You can export the strptime() function and use it to parse date and
-time strings back to numbers. For example the following will return
-the hours, minutes, and seconds as $parse{H}, $parse{M}, and $parse{S}.
-
- use Time::Piece 'strptime';
- my %parse = strptime('%H:%M:S', '12:34:56');
-
-For 'compound' formats like for example 'T' strptime() will return
-the 'components'.
-
-strptime() does not perform overly strict checks on the dates and
-times, it will be perfectly happy with the 31st day of February,
-for example. Stricter validation should be performed by other means.
-
-=head2 Global Overriding
-
-Finally, it's possible to override localtime and gmtime everywhere, by
-including the ':override' tag in the import list:
-
- use Time::Piece ':override';
-
-=head1 SEE ALSO
-
-The excellent Calendar FAQ at L<http://www.tondering.dk/claus/calendar.html>
-
-If you just want an object-oriented interface to the usual time
-functions see L<Time::localtime> and L<Time::gmtime> which are part
-of the standard distribution. Beware, though, that their fields are as
-in the C library: the I<year> is I<year-1900> (like $t->_year in Time::Piece)
-and I<months> begin from zero (like $t->_mon).
-
-L<strftime(3)>, L<strftime(3)>
-
-=head1 AUTHOR
-
-Matt Sergeant, matt@sergeant.org
-
-This module is based on Time::Object, with changes suggested by Jarkko
-Hietaniemi before including in core perl.
-
-=head2 License
-
-This module is free software, you may distribute it under the same terms
-as Perl.
-
-=head2 Bugs
-
-The test harness leaves much to be desired. Patches welcome.
-
-=cut
diff --git a/ext/Time/Piece/Piece.t b/ext/Time/Piece/Piece.t
deleted file mode 100644
index f20069679e..0000000000
--- a/ext/Time/Piece/Piece.t
+++ /dev/null
@@ -1,330 +0,0 @@
-BEGIN {
- chdir 't' if -d 't';
- @INC = '../lib';
-}
-
-BEGIN {
- require Config; import Config;
-
- if ($Config{extensions} !~ m!\bTime/Piece\b!) {
- print "1..0 # Time::Piece not built\n";
- exit 0;
- }
-}
-
-print "1..86\n";
-
-use Time::Piece;
-
-print "ok 1\n";
-
-my $t = gmtime(951827696); # 2001-02-29T12:34:56
-
-print "not " unless $t->sec == 56;
-print "ok 2\n";
-
-print "not " unless $t->second == 56;
-print "ok 3\n";
-
-print "not " unless $t->min == 34;
-print "ok 4\n";
-
-print "not " unless $t->minute == 34;
-print "ok 5\n";
-
-print "not " unless $t->hour == 12;
-print "ok 6\n";
-
-print "not " unless $t->mday == 29;
-print "ok 7\n";
-
-print "not " unless $t->day_of_month == 29;
-print "ok 8\n";
-
-print "not " unless $t->mon == 2;
-print "ok 9\n";
-
-print "not " unless $t->_mon == 1;
-print "ok 10\n";
-
-print "not " unless $t->monname eq 'Feb';
-print "ok 11\n";
-
-print "not " unless $t->month eq 'February';
-print "ok 12\n";
-
-print "not " unless $t->year == 2000;
-print "ok 13\n";
-
-print "not " unless $t->_year == 100;
-print "ok 14\n";
-
-print "not " unless $t->wday == 3;
-print "ok 15\n";
-
-print "not " unless $t->_wday == 2;
-print "ok 16\n";
-
-print "not " unless $t->day_of_week == 2;
-print "ok 17\n";
-
-print "not " unless $t->wdayname eq 'Tue';
-print "ok 18\n";
-
-print "not " unless $t->weekday eq 'Tuesday';
-print "ok 19\n";
-
-print "not " unless $t->yday == 59;
-print "ok 20\n";
-
-print "not " unless $t->day_of_year == 59;
-print "ok 21\n";
-
-# In GMT there should be no daylight savings ever.
-
-my $dst = 0;
-my $dst_mess = '';
-if ($^O eq 'os2') {
- # OS/2 EMX bug
- $dst = (CORE::gmtime(0))[8];
- $dst_mess = ' # skipped: gmtime(0) thinks DST gmtime 0 == -1';
-}
-print "not " unless $t->isdst == $dst;
-print "ok 22$dst_mess\n";
-
-print "not " unless $t->daylight_savings == $dst;
-print "ok 23$dst_mess\n";
-
-print "not " unless $t->hms eq '12:34:56';
-print "ok 24\n";
-
-print "not " unless $t->time eq '12:34:56';
-print "ok 25\n";
-
-print "not " unless $t->ymd eq '2000-02-29';
-print "ok 26\n";
-
-print "not " unless $t->date eq '2000-02-29';
-print "ok 27\n";
-
-print "not " unless $t->mdy eq '02-29-2000';
-print "ok 28\n";
-
-print "not " unless $t->dmy eq '29-02-2000';
-print "ok 29\n";
-
-print "not " unless $t->cdate eq 'Tue Feb 29 12:34:56 2000';
-print "ok 30\n";
-
-print "not " unless "$t" eq 'Tue Feb 29 12:34:56 2000';
-print "ok 31\n";
-
-print "not " unless $t->datetime eq '2000-02-29T12:34:56';
-print "ok 32\n";
-
-print "not " unless $t->epoch == 951827696;
-print "ok 33\n";
-
-# ->tzoffset?
-
-print "not " unless ($t->julian_day / 2451604.0075) - 1 < 0.001;
-print "ok 34\n";
-
-print "not " unless ($t->mjd / 51603.5075) - 1 < 0.001;
-print "ok 35\n";
-
-print "not " unless $t->week == 9;
-print "ok 36\n";
-
-if ($Config{d_strftime}) {
-
- print "not " unless $t->strftime('%a') eq 'Tue';
- print "ok 37\n";
-
- print "not " unless $t->strftime('%A') eq 'Tuesday';
- print "ok 38\n";
-
- print "not " unless $t->strftime('%b') eq 'Feb';
- print "ok 39\n";
-
- print "not " unless $t->strftime('%B') eq 'February';
- print "ok 40\n";
-
- print "not " unless $t->strftime('%c') eq 'Tue Feb 29 12:34:56 2000';
- print "ok 41\n";
-
- print "not " unless $t->strftime('%C') == 20;
- print "ok 42\n";
-
- print "not " unless $t->strftime('%d') == 29;
- print "ok 43\n";
-
- print "not " unless $t->strftime('%D') eq '02/29/00'; # Yech!
- print "ok 44\n";
-
- print "not " unless $t->strftime('%e') eq '29'; # should test with < 10
- print "ok 45\n";
-
- print "not " unless $t->strftime('%H') eq '12'; # should test with < 10
- print "ok 46\n";
-
- print "not " unless $t->strftime('%b') eq 'Feb';
- print "ok 47\n";
-
- print "not " unless $t->strftime('%I') eq '12'; # should test with < 10
- print "ok 48\n";
-
- print "not " unless $t->strftime('%j') eq '059';
- print "ok 49\n";
-
- print "not " unless $t->strftime('%M') eq '34'; # should test with < 10
- print "ok 50\n";
-
- print "not " unless $t->strftime('%p') eq 'am';
- print "ok 51\n";
-
- print "not " unless $t->strftime('%r') eq '12:34:56 am';
- print "ok 52\n";
-
- print "not " unless $t->strftime('%R') eq '12:34'; # should test with > 12
- print "ok 53\n";
-
- print "not " unless $t->strftime('%S') eq '56'; # should test with < 10
- print "ok 54\n";
-
- print "not " unless $t->strftime('%T') eq '12:34:56'; # < 12 and > 12
- print "ok 55\n";
-
- print "not " unless $t->strftime('%u') == 2;
- print "ok 56\n";
-
- print "not " unless $t->strftime('%U') eq '09'; # Sun cmp Mon
- print "ok 57\n";
-
- print "not " unless $t->strftime('%V') eq '09'; # Sun cmp Mon
- print "ok 58\n";
-
- print "not " unless $t->strftime('%w') == 2;
- print "ok 59\n";
-
- print "not " unless $t->strftime('%W') eq '09'; # Sun cmp Mon
- print "ok 60\n";
-
- print "not " unless $t->strftime('%x') eq '02/29/00'; # Yech!
- print "ok 61\n";
-
- print "not " unless $t->strftime('%y') == 0; # should test with 1999
- print "ok 62\n";
-
- print "not " unless $t->strftime('%Y') eq '2000';
- print "ok 63\n";
-
- # %Z can't be tested, too unportable
-
-} else {
- for (38...63) {
- print "ok $_ # Skip: no strftime\n";
- }
-}
-
-print "not " unless $t->ymd("") eq '20000229';
-print "ok 64\n";
-
-print "not " unless $t->mdy("/") eq '02/29/2000';
-print "ok 65\n";
-
-print "not " unless $t->dmy(".") eq '29.02.2000';
-print "ok 66\n";
-
-print "not " unless $t->date_separator() eq '-';
-print "ok 67\n";
-
-$t->date_separator("/");
-
-print "not " unless $t->ymd eq '2000/02/29';
-print "ok 68\n";
-
-print "not " unless $t->date_separator() eq '/';
-print "ok 69\n";
-
-$t->date_separator("-");
-
-print "not " unless $t->hms(".") eq '12.34.56';
-print "ok 70\n";
-
-print "not " unless $t->time_separator() eq ':';
-print "ok 71\n";
-
-$t->time_separator(".");
-
-print "not " unless $t->hms eq '12.34.56';
-print "ok 72\n";
-
-print "not " unless $t->time_separator() eq '.';
-print "ok 73\n";
-
-$t->time_separator(":");
-
-my @fidays = qw( sunnuntai maanantai tiistai keskiviikko torstai
- perjantai lauantai );
-my @frdays = qw( Dimanche Lundi Merdi Mercredi Jeudi Vendredi Samedi );
-
-print "not " unless $t->weekday(@fidays) eq "tiistai";
-print "ok 74\n";
-
-my @days = $t->weekday_names();
-
-Time::Piece::weekday_names(@frdays);
-
-print "not " unless $t->weekday eq "Merdi";
-print "ok 75\n";
-
-Time::Piece::weekday_names(@days);
-
-print "not " unless $t->weekday eq "Tuesday";
-print "ok 76\n";
-
-my @months = $t->mon_names();
-
-my @dumonths = qw(januari februari maart april mei juni
- juli augustus september oktober november december);
-
-print "not " unless $t->month(@dumonths) eq "februari";
-print "ok 77\n";
-
-Time::Piece::month_names(@dumonths);
-
-print "not " unless $t->month eq "februari";
-print "ok 78\n";
-
-Time::Piece::mon_names(@months);
-
-print "not " unless $t->monname eq "Feb";
-print "ok 79\n";
-
-print "not " unless
- $t->datetime(date => '/', T => ' ', time => '-') eq "2000/02/29 12-34-56";
-print "ok 80\n";
-
-print "not " unless $t->is_leap_year;
-print "ok 81\n";
-
-print "not " unless $t->month_last_day == 29; # test more
-print "ok 82\n";
-
-print "not " if Time::Piece::_is_leap_year(1900);
-print "ok 83\n";
-
-print "not " if Time::Piece::_is_leap_year(1901);
-print "ok 84\n";
-
-print "not " unless Time::Piece::_is_leap_year(1904);
-print "ok 85\n";
-
-use Time::Piece 'strptime';
-
-my %T = strptime("%T", "12:34:56");
-
-print "not " unless keys %T == 3 && $T{H} == 12 && $T{M} == 34 && $T{S} == 56;
-print "ok 86\n";
-
diff --git a/ext/Time/Piece/Piece.xs b/ext/Time/Piece/Piece.xs
deleted file mode 100644
index d888588dcb..0000000000
--- a/ext/Time/Piece/Piece.xs
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifdef __cplusplus
-#extern "C" {
-#endif
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include <time.h>
-#ifdef __cplusplus
-}
-#endif
-
-MODULE = Time::Piece PACKAGE = Time::Piece
-
-PROTOTYPES: ENABLE
-
-char *
-__strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)
- char * fmt
- int sec
- int min
- int hour
- int mday
- int mon
- int year
- int wday
- int yday
- int isdst
-
- PREINIT:
- char *buf = NULL;
-
- CODE:
- #XXX: an sv_strftime() that can make use of the TARG would faster
- buf = my_strftime(fmt, sec, min, hour, mday, mon, year, wday, yday, isdst);
- RETVAL = buf;
-
- OUTPUT:
- RETVAL
-
- CLEANUP:
- if (buf) {
- Safefree(buf);
- }
diff --git a/ext/Time/Piece/README b/ext/Time/Piece/README
deleted file mode 100644
index a9ef44c18f..0000000000
--- a/ext/Time/Piece/README
+++ /dev/null
@@ -1,111 +0,0 @@
-NAME
- Time::Object - Object Oriented time objects
-
-SYNOPSIS
- use Time::Object;
-
- my $t = localtime;
- print "Time is $t\n";
- print "Year is ", $t->year, "\n";
-
-DESCRIPTION
- This module replaces the standard localtime and gmtime functions
- with implementations that return objects. It does so in a
- backwards compatible manner, so that using localtime/gmtime in
- the way documented in perlfunc will still return what you
- expect.
-
- The module actually implements most of an interface described by
- Larry Wall on the perl5-porters mailing list here:
- http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-
- 01/msg00241.html
-
-USAGE
- After importing this module, when you use localtime or gmtime in
- a scalar context, rather than getting an ordinary scalar string
- representing the date and time, you get a Time::Object object,
- whose stringification happens to produce the same effect as the
- localtime and gmtime functions. There is also a new()
- constructor provided, which is the same as localtime(), except
- when passed a Time::Object object, in which case it's a copy
- constructor. The following methods are available on the object:
-
- $t->sec # also available as $t->second
- $t->min # also available as $t->minute
- $t->hour
- $t->mday # also available as $t->day_of_month
- $t->mon # based at 1
- $t->_mon # based at 0
- $t->monname # February
- $t->month # same as $t->monname
- $t->year # based at 0 (year 0 AD is, of course 1 BC).
- $t->_year # year minus 1900
- $t->yr # 2 digit year
- $t->wday # based at 1 = Sunday
- $t->_wday # based at 0 = Sunday
- $t->day_of_week # based at 0 = Sunday
- $t->wdayname # Tuesday
- $t->day # same as wdayname
- $t->yday # also available as $t->day_of_year
- $t->isdst # also available as $t->daylight_savings
- $t->hms # 01:23:45
- $t->ymd # 2000/02/29
- $t->mdy # 02/29/2000
- $t->dmy # 29/02/2000
- $t->date # Tue Feb 29 01:23:45 2000
- "$t" # same as $t->date
- $t->epoch # seconds since the epoch
- $t->tzoffset # timezone offset in a Time::Seconds object
- $t->strftime(FORMAT) # same as POSIX::strftime (without POSIX.pm)
-
- Date Calculations
-
- It's possible to use simple addition and subtraction of objects:
-
- use Time::Seconds;
-
- my $seconds = $t1 - $t2;
- $t1 += ONE_DAY; # add 1 day (constant from Time::Seconds)
-
- The following are valid ($t1 and $t2 are Time::Object objects):
-
- $t1 - $t2; # returns Time::Seconds object
- $t1 - 42; # returns Time::Object object
- $t1 + 533; # returns Time::Object object
-
- However adding a Time::Object object to another Time::Object
- object will cause a runtime error.
-
- Note that the first of the above returns a Time::Seconds object,
- so while examining the object will print the number of seconds
- (because of the overloading), you can also get the number of
- minutes, hours, days, weeks and years in that delta, using the
- Time::Seconds API.
-
- Date Comparisons
-
- Date comparisons are also possible, using the full suite of "<",
- ">", "<=", ">=", "<=>", "==" and "!=".
-
- Global Overriding
-
- Finally, it's possible to override localtime and gmtime
- everywhere, by including the 'overrideGlobally' tag in the
- import list:
-
- use Time::Object 'overrideGlobally';
-
- I'm not too keen on this name yet - suggestions welcome...
-
-AUTHOR
- Matt Sergeant, matt@sergeant.org
-
- License
-
- This module is free software, you may distribute it under the
- same terms as Perl.
-
- Bugs
-
- The test harness leaves much to be desired. Patches welcome.
-
diff --git a/ext/Time/Piece/Seconds.pm b/ext/Time/Piece/Seconds.pm
deleted file mode 100644
index 7544915dfa..0000000000
--- a/ext/Time/Piece/Seconds.pm
+++ /dev/null
@@ -1,217 +0,0 @@
-package Time::Seconds;
-use strict;
-use vars qw/@EXPORT @ISA/;
-
-@ISA = 'Exporter';
-
-@EXPORT = qw(
- ONE_MINUTE
- ONE_HOUR
- ONE_DAY
- ONE_WEEK
- ONE_MONTH
- ONE_YEAR
- ONE_FINANCIAL_MONTH
- LEAP_YEAR
- NON_LEAP_YEAR
- );
-
-use constant ONE_MINUTE => 60;
-use constant ONE_HOUR => 3_600;
-use constant ONE_DAY => 86_400;
-use constant ONE_WEEK => 604_800;
-use constant ONE_MONTH => 2_629_744; # ONE_YEAR / 12
-use constant ONE_YEAR => 31_556_930; # 365.24225 days
-use constant ONE_FINANCIAL_MONTH => 2_592_000; # 30 days
-use constant LEAP_YEAR => 31_622_400; # 366 * ONE_DAY
-use constant NON_LEAP_YEAR => 31_536_000; # 365 * ONE_DAY
-
-use overload
- '0+' => \&seconds,
- '""' => \&seconds,
- '<=>' => \&compare,
- '+' => \&add,
- '-' => \&subtract,
- '-=' => \&subtract_from,
- '+=' => \&add_to,
- '=' => \&copy;
-
-sub new {
- my $class = shift;
- my ($val) = @_;
- $val = 0 unless defined $val;
- bless \$val, $class;
-}
-
-sub _get_ovlvals {
- my ($lhs, $rhs, $reverse) = @_;
- $lhs = $lhs->seconds;
-
- if (UNIVERSAL::isa($rhs, 'Time::Seconds')) {
- $rhs = $rhs->seconds;
- }
- elsif (ref($rhs)) {
- die "Can't use non Seconds object in operator overload";
- }
-
- if ($reverse) {
- return $rhs, $lhs;
- }
-
- return $lhs, $rhs;
-}
-
-sub compare {
- my ($lhs, $rhs) = _get_ovlvals(@_);
- return $lhs <=> $rhs;
-}
-
-sub add {
- my ($lhs, $rhs) = _get_ovlvals(@_);
- return Time::Seconds->new($lhs + $rhs);
-}
-
-sub add_to {
- my $lhs = shift;
- my $rhs = shift;
- $rhs = $rhs->seconds if UNIVERSAL::isa($rhs, 'Time::Seconds');
- $$lhs += $rhs;
- return $lhs;
-}
-
-sub subtract {
- my ($lhs, $rhs) = _get_ovlvals(@_);
- return Time::Seconds->new($lhs - $rhs);
-}
-
-sub subtract_from {
- my $lhs = shift;
- my $rhs = shift;
- $rhs = $rhs->seconds if UNIVERSAL::isa($rhs, 'Time::Seconds');
- $$lhs -= $rhs;
- return $lhs;
-}
-
-sub copy {
- Time::Seconds->new(${$_[0]});
-}
-
-sub seconds {
- my $s = shift;
- $$s;
-}
-
-sub minutes {
- my $s = shift;
- $$s / 60;
-}
-
-sub hours {
- my $s = shift;
- $s->minutes / 60;
-}
-
-sub days {
- my $s = shift;
- $s->hours / 24;
-}
-
-sub weeks {
- my $s = shift;
- $s->days / 7;
-}
-
-sub months {
- my $s = shift;
- $s->days / 30.4368541;
-}
-
-sub financial_months {
- my $s = shift;
- $s->days / 30;
-}
-
-*f_months = \&financial_months;
-
-sub years {
- my $s = shift;
- $s->days / 365.24225;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Time::Seconds - a simple API to convert seconds to other date values
-
-=head1 SYNOPSIS
-
- use Time::Piece;
- use Time::Seconds;
-
- my $t = localtime;
- $t += ONE_DAY;
-
- my $t2 = localtime;
- my $s = $t - $t2;
-
- print "Difference is: ", $s->days, "\n";
-
-=head1 DESCRIPTION
-
-This module is part of the Time::Piece distribution. It allows the user
-to find out the number of minutes, hours, days, weeks or years in a given
-number of seconds. It is returned by Time::Piece when you delta two
-Time::Piece objects.
-
-Time::Seconds also exports the following constants:
-
- ONE_DAY
- ONE_WEEK
- ONE_HOUR
- ONE_MINUTE
- ONE_MONTH
- ONE_YEAR
- ONE_FINANCIAL_MONTH
- LEAP_YEAR
- NON_LEAP_YEAR
-
-Since perl does not (yet?) support constant objects, these constants
-are in seconds only, so you cannot, for example, do this: C<print
-ONE_WEEK-E<gt>minutes;>
-
-=head1 METHODS
-
-The following methods are available:
-
- my $val = Time::Seconds->new(SECONDS)
- $val->seconds;
- $val->minutes;
- $val->hours;
- $val->days;
- $val->weeks;
- $val->months;
- $val->financial_months; # 30 days
- $val->years;
-
-The methods make the assumption that there are 24 hours in a day, 7 days in
-a week, 365.24225 days in a year and 12 months in a year.
-(from The Calendar FAQ at http://www.tondering.dk/claus/calendar.html)
-
-=head1 AUTHOR
-
-Matt Sergeant, matt@sergeant.org
-
-Tobias Brox, tobiasb@tobiasb.funcom.com
-
-=head1 LICENSE
-
-Please see Time::Piece for the license.
-
-=head1 Bugs
-
-Currently the methods aren't as efficient as they could be, for reasons of
-clarity. This is probably a bad idea.
-
-=cut