lastLogon is stored as a large integer that represents the number of 100 nanosecond intervals since January 1, 1601 (UTC). A value of zero means that the last logon time is unknown.
I use an incantation like follows to get date type values out of AD:
sub msqtime2perl { # MicroSoft QuadTime to Perl
my $foo = shift;
my ($high,$low) = map { $foo->{ $_ } } qw(HighPart LowPart);
return unless $high and $low;
return ((unpack("L",pack("L",$low)) + unpack("L",pack("L",$high)) *
(2 ** 32))) / 10000000) - 11644473600;
}
if ( $userObject->{lastLogon} and $userObject->{lastLogon}->{HighPart}
+ ) {
$epochtime = msqtime2perl( $userObject->{lastLogon} );
}