From: Tanaka Akira Date: 2001-12-14T19:40:00+09:00 Subject: [ruby-dev:15450] Re: Time#utcoff In article <1008320813.231850.10341.nullmailer@ev.netlab.jp>, matz@ruby-lang.org (Yukihiro Matsumoto) writes: > $B$=$lJQ$G$9$M$(!#(B $B$&$%!"$3$l$O4V0c$$$@$C$?$h$&$G$9!#(B akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c29d868c6dff)' Tue Dec 31 23:59:59 PST 2147483647 akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c29d868c6e00)' Wed Jan 01 00:00:00 PST -2147483648 akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c2ab7c5519ff)' Wed Dec 31 23:59:59 PST -2147481749 akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c2ab7c551a00)' -e:1:in `inspect': localtime error (ArgumentError) from -e:1:in `p' from -e:1 $B$I$A$i$b$3$&$$$&5sF0$K$J$j$^$9!#(B64bit $B8B3&$^$G$O;H$($J$$$s$G$9$M$'!#(B > $B$G$9$+$i!"(BSIZEOF_INT < SIZEOF_LONG ($B$3$N%1!<%9(B)$B$G$O!"(B > NUM2LONG()$B$H(BNUM2INT()$B$O0c$&$b$N$@$H;W$&$N$G$9$,!#(B > $B$I$C$A$+$H$$$&$H(B rb_num2long() $B$N $B$9$+$M$(!#(B $B$3$l$bE12s$7$^$9!#(B akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))' -e:1:in `at': time must be positive (ArgumentError) from -e:1 akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at((1 << 63) -1)' -e:1:in `inspect': localtime error (ArgumentError) from -e:1:in `p' from -e:1 $B$h$/9M$($?$i(B 1 << 63 $B$O(B signed 64bit $B$K$O<}$^$i$J$$$+$iLdBj$J$$$s$G$9$M!#(B ($B:G=i$+$i5$$E$1$h(B...) $B$G$bB>$NLdBj$b$"$k$h$&$G$9!#>/$J$/$H$b(B glibc $B$N$/$;$K(B negative time_t $B$,;H$($J$$$H$$$&$N$O$*$+$7$$$H$$$&$N$,$"$j$^$9!#(B akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))' -e:1:in `at': time must be positive (ArgumentError) from -e:1 $B$I$&$d$i(B configure.in $B$N(B -0x80000000 $B$H$$$&$N$,LdBj$N$h$&$G$9!#(B Standard C http://www-ccs.ucsd.edu/c/ $B$rD4$Y$F$_$k$H!"(B0x80000000 $B$O(B hexadecimal integer constant $B$G$"$j!"(Bunsigned int (32bit) $B$K<}$^$k$N$G!"(B unsigned int $B$K$J$j!"(B-0x80000000 $B$O(B 0x80000000 $B$K$J$C$F!"$=$l$,(B time_t (64bit signed inteter)$B$K$J$C$F(B 0x0000000080000000 $B$K$J$k$h$&$G$9$M!#$=(B $B$&$9$k$H0U?^$;$6$kL$Mh$N;~9o$,JV$C$F$-$F<:GT$9$k$H!#(B hexadecimal integer constant $B$8$c$J$/$F(B decimal integer constant $B$K$9(B $B$k$H(B unsigned int $B$8$c$J$/$F(B long $B$K$J$C$F$&$^$/$$$/$h$&$J$N$G(B -2147483648 $B$H$9$k$H!"(B akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))' -e:1:in `inspect': localtime error (ArgumentError) from -e:1:in `p' from -e:1 akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63) - 1)' -e:1:in `at': bignum too big to convert into `int' (RangeError) from -e:1 $B$H$J$C$F!"$^$!!"$"$s$^$j$O$C$T!<$8$c$"$j$^$;$s$,M=4|$5$l$?7k2L$K$J$j$^(B $B$9!#(B -- [$BEDCf(B $BE/(B][$B$?$J$+(B $B$"$-$i(B][Tanaka Akira] $B!V$U$($m(B! $B$o$+$a$A$c$s:n@o$G$9$(C"=$B!W(B(Little Worker, $B7KM7@84](B)