Perlについて (843レス)
Perlについて http://mevius.5ch.net/test/read.cgi/tech/1217851121/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
768: デフォルトの名無しさん [] 2020/01/01(水) 14:14:05.07 ID:fUaq4dOi 以前ローカルタイムとGMTの秒数のずれを出すためにこんな風に書いた。 use Time::Local; my $t = timegm(localtime(0)); これは昨日までは正常に動いた。ローカルタイムが日本時間(JST)なら9時間を秒に直した 32400 が返されていた。 しかし今日(2020年1月1日)になったらいきなり巨大な数を返すようになった。 ローカルタイムが JST なら 3155792400 になる。そしてこれは32bitのOSではエラーになった。 (整数のビット数が多くなるように Perl がコンパイルされていれば大丈夫なのかも知れないが)。 この巨大な数はなんなのかと調べてみたら、2070年だった。 $ date -d '@3155792400' 2070年 1月 1日 水曜日 18:00:00 JST $ で、結局これは timegm() の年に与える数が4桁の西暦年になるように修正したらうまく行った。 use Time::Local; my @tt = localtime(0); $tt[5] += 1900; my $t = timegm(@tt); これでローカルタイムが日本時間なら 32400 になる。(OSが32bitでも問題なし)。 でもこれ、なんか変だよね? バグじゃないのか? 2020年にいきなり変わるって、元からそういう仕様だったの? http://mevius.5ch.net/test/read.cgi/tech/1217851121/768
770: デフォルトの名無しさん [] 2020/01/01(水) 16:16:55.11 ID:fUaq4dOi >>769 わかった。ソース見てわかった。50年な。今年の年に50足して100で割った余りを区切りにするから70が区切りで、70未満は今年の世紀の2000足しちゃうのな。 どうりで71年からはちゃんと計算できると思ったら。 http://mevius.5ch.net/test/read.cgi/tech/1217851121/770
771: デフォルトの名無しさん [] 2020/01/01(水) 16:17:56.87 ID:fUaq4dOi 未満じゃない。以下か。 http://mevius.5ch.net/test/read.cgi/tech/1217851121/771
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s