File: ActiveDirectory.pm

package info (click to toggle)
libdatetime-format-epoch-perl 0.16-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 260 kB
  • sloc: perl: 386; makefile: 2
file content (100 lines) | stat: -rw-r--r-- 2,611 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package DateTime::Format::Epoch::ActiveDirectory;

use strict;

use vars qw($VERSION @ISA);

$VERSION = '0.13';

use DateTime;
use DateTime::Format::Epoch;

@ISA = qw/DateTime::Format::Epoch/;

my $epoch = DateTime->new( year => 1601, month => 1, day => 1,
                           time_zone => 'floating' );

sub new {
	my $class = shift;

    return $class->SUPER::new( epoch => $epoch,
                               unit  => 1e7,
                               type  => 'bigint',
                               local_epoch => undef,
                               skip_leap_seconds => 1 );
}

1;
__END__

=head1 NAME

DateTime::Format::Epoch::ActiveDirectory -  Active Directory epoch seconds

=head1 SYNOPSIS

  use DateTime::Format::Epoch::ActiveDirectory;

  my $dt = DateTime::Format::Epoch::ActiveDirectory
                ->parse_datetime( 1051488000 );

  DateTime::Format::Epoch::ActiveDirectory->format_datetime($dt);
   # 1051488000

  my $formatter = DateTime::Format::Epoch::ActiveDirectory->new();
  my $dt2 = $formatter->parse_datetime( 1051488000 );
  $formatter->format_datetime($dt2);

=head1 DESCRIPTION

This module can convert a DateTime object (or any object that can be
converted to a DateTime object) to the number of seconds since the
epoch used in Microsoft Active Directory.

Note that this epoch is defined in the I<local> time zone. This means
that these two pieces of code will print the same number of seconds,
even though they represent two datetimes 6 hours apart:

    $dt = DateTime->new( year => 2003, month => 5, day => 2,
                         time_zone => 'Europe/Amsterdam' );
    print $formatter->format_datetime($dt);

    $dt = DateTime->new( year => 2003, month => 5, day => 2,
                         time_zone => 'America/Chicago' );
    print $formatter->format_datetime($dt);

=head1 METHODS

Most of the methods are the same as those in L<DateTime::Format::Epoch>.
The only difference is the constructor.

=over 4

=item * new()

Constructor of the formatter/parser object. It has no parameters.

=back

=head1 SUPPORT

Support for this module is provided via the datetime@perl.org email
list. See http://lists.perl.org/ for more details.

=head1 AUTHOR

Eugene van der Pijll <pijll@gmx.net>

=head1 COPYRIGHT

Copyright (c) 2004 Eugene van der Pijll.  All rights reserved.  This
program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.

=head1 SEE ALSO

L<DateTime>

datetime@perl.org mailing list

=cut