Time::Epoch - Convert between Perl epoch and other epochs


Time-Epoch documentation Contained in the Time-Epoch distribution.

Index


Code Index:

NAME

Top

Time::Epoch - Convert between Perl epoch and other epochs

SYNOPSIS

Top

  #!/usr/bin/perl -wl
  use Time::Epoch;
  my $perlsec  = 966770660;  # Sun Aug 20 07:24:21 2000 -0400 on Mac OS
  my $epochsec = perl2epoch($perlsec, 'macos', '-0400');
  my $perlsec2 = epoch2perl($epochsec, 'macos', '-0400');

  print $perlsec;
  print $perlsec2;
  print $epochsec;
  # correct time on Unix:
  print scalar localtime $perlsec;
  # correct time on Mac OS (-0400):
  print scalar localtime $epochsec;




DESCRIPTION

Top

Exports two functions, perl2epoch and epoch2perl. Currently only goes between Perl (Unix) epoch and Mac OS epoch. This is in preparation for an eventual move of Perl to its own universal epoch, so we can get the system epoch of any platform that differs from Perl's.

Epochs

* macos

Takes additional optional parameter of time zone differential. If time zone differential not supplied, we guess by getting the different between localtime and gmtime with <Time::Local::timelocal>.

BUGS

Top

AUTHOR

Top

Chris Nandor <pudge@pobox.com>, http://pudge.net/

Copyright (c) 2000-2003 Chris Nandor. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License, distributed with Perl.

SEE ALSO

Top

perl(1), perlport(1), Time::Local.


Time-Epoch documentation Contained in the Time-Epoch distribution.

package Time::Epoch;

use strict;
use vars qw($VERSION @ISA @EXPORT);
require Exporter;

@ISA = 'Exporter';
@EXPORT = qw(
	perl2epoch epoch2perl
);
$VERSION = '0.02';


sub perl2epoch {
    my($perlsec, $epoch, @extra) = @_;
    my $epochsec;

    if ($epoch eq 'macos') {
        $epochsec = $perlsec + macos_offset();
        $epochsec += tz_offset($extra[0]);
    }

    return $epochsec;

}

sub epoch2perl {
    my($epochsec, $epoch, @extra) = @_;
    my $perlsec;

    if ($epoch eq 'macos') {
        $perlsec = $epochsec - macos_offset();
        $perlsec -= tz_offset($extra[0]);
    }

    return $perlsec;

}

sub macos_offset () { 2082844800 }
sub tz_offset {
    my($offset) = @_;
    my $tz_offset;

    if (defined $offset) {
        $tz_offset = $offset * 36;
    } else {
        require Time::Local;
        $tz_offset = sprintf "%+0.4d\n", (Time::Local::timelocal(localtime)
            - Time::Local::timelocal(gmtime));
    }

    return $tz_offset;
}

1;

__END__