Nope…that doesn’t work either.
def self.ad2time(timestamp)
# CONVERT NEVER EXPIRES ‘accountExpires’ NUMBER TO 12/31/2099 TO GET
AROUND BIGNUM PROBLEM ON SOLARIS
if timestamp == “9223372036854775807”
timestamp = “157468536000000000”
end
ad_epoch = 116_444_736_000_000_000
ad_multiplier = 10_000_000
Time.at((timestamp.to_i - ad_epoch) / ad_multiplier)
end
I ran through the calculation in irb and get this…
irb(main):003:0> 157468536000000000 - 116_444_736_000_000_000
=> 41023800000000000
irb(main):004:0> 41023800000000000/10_000_000
=> 4102380000
irb(main):005:0> Time.at(4102380000)
RangeError: bignum too big to convert into long' from (irb):5:in
at’
from (irb):5
So Solaris can’t even work with a date in this century? That’s bad…
I ran the exact same numbers through irb on my Mac and it works just
fine…
157468536000000000 - 116_444_736_000_000_000
=> 41023800000000000
41023800000000000/10_000_000
=> 4102380000
Time.at(4102380000)
=> Thu Dec 31 00:00:00 -0600 2099
Another reason for me to dislike Solaris SPARC.
Matt
----- Original Message -----
From: “Matt M.” [email protected]
To: “ruby-talk ML” [email protected]
Sent: Tuesday, August 10, 2010 8:40:54 AM
Subject: Re: Error: Bignum too big to convert into `long’
Ah…
9223372036854775807 is the timestamp value assigned to the
“accountExpires” attribute in Active Directory when any account is set
to “Never Expire”.
It works fine on Linux/Mac but not on Solaris. I guess I’ll just
convert that timestamp to something like 12/31/2099 23:59:59 before I
run the Time.at.
Matt
----- Original Message -----
From: “Brian C.” [email protected]
To: “ruby-talk ML” [email protected]
Sent: Tuesday, August 10, 2010 7:53:24 AM
Subject: Re: Error: Bignum too big to convert into `long’
Try your example values in irb:
irb(main):003:0> (9223372036854775807 - 116_444_736_000_000_000) /
10_000_000
=> 910692730085
irb(main):004:0> Time.at(910692730085)
RangeError: bignum too big to convert into long' from (irb):4:in
at’
from (irb):4
Time.at expects number of seconds since Jan 1, 1970.
The value you have given it is some time in the year 30,828 
I suspect either your epoch or your multiplier is wrong.
B.