アカウント名:
パスワード:
「昭和xx年」と表示する帳票を作るソフトを作成した後、会社が倒産。 で、天皇崩御後、客先から直接連絡が来た。
倒産時にソースコードが失われていたため、プログラムの修正が不可能だけど、ソフトウェアは使いつづけたいと言われた。 結局、年号が単調増加しないとうまく動かなかった仕様だったので、「昭和71年」と表示するように帳票を作成してもらい、「昭和7」のぶぶんをホワイトで消して、上から「平成」と手書きで書いてくれと頼んだ。
そういえば、学生の頃の社会科の教科書の未来の人口増加グラフなんて平気で昭和100年とか書いてましたね。大人しく西暦とか皇紀にしておけばよかったものを・・・
そこで2000年問題ですよ。その辺の設計思想でうんぬんってのは、別に洋の東西を問わない。
perlの古いバージョンで、2桁表示の西暦で99年の次が100年になって云々なんて話、今の若もんにゃわからんのだろうなー。perl製の各種掲示板プログラムで多々こういう問題が出てのう.......(以下じじいは退散)#素でとうのようざいを問わないと入力して変換できずに悩んでしまったアレですがナニか
いや、全然 perl に限った話ではありません。
C言語の標準ライブラリ関数 localtime などは、標準ライブラリ関数 time が返す「エポック秒」を、年月日時分秒な構造体に変換する関数なのですが、その tm_year は、「西暦から1900を引いた数を表す」という仕様になってます。(「西暦を2桁表現したもの」からその仕様を保ちつつ2000年対応した結果ですね)
そのため、perl に限らず、古くから存在する「言語環境」なんかでは、この仕様をそのまま受け継いでいるものが多いです。perl は、perl -e 'print ((localtime)[5])' で 109 が表示されますし。、JavaScript でも、javascript:alert((new Date()).getYear()); は 109 と表示されます。phpは、新しいだけあって、ちゃんと2009が返ってきますね。
rubyもTime.new.yearでは2009が返ってきます。
perlは正にstruct tm;の影響でしょうね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
平成 (スコア:1, 参考になる)
「昭和xx年」と表示する帳票を作るソフトを作成した後、会社が倒産。 で、天皇崩御後、客先から直接連絡が来た。
倒産時にソースコードが失われていたため、プログラムの修正が不可能だけど、ソフトウェアは使いつづけたいと言われた。 結局、年号が単調増加しないとうまく動かなかった仕様だったので、「昭和71年」と表示するように帳票を作成してもらい、「昭和7」のぶぶんをホワイトで消して、上から「平成」と手書きで書いてくれと頼んだ。
Re: (スコア:1)
10年前は昭和表示でしたが.......
昭和100年まで使えるかも(笑
------------
惑星ケイロンまであと何マイル?
Re: (スコア:0)
そういえば、学生の頃の社会科の教科書の未来の人口増加グラフなんて平気で昭和100年とか書いてましたね。
大人しく西暦とか皇紀にしておけばよかったものを・・・
Re: (スコア:2)
そこで2000年問題ですよ。その辺の設計思想でうんぬんってのは、別に洋の東西を問わない。
perlの古いバージョンで、2桁表示の西暦で99年の次が100年になって云々なんて話、今の若もんにゃわからんのだろうなー。
perl製の各種掲示板プログラムで多々こういう問題が出てのう.......(以下じじいは退散)
#素でとうのようざいを問わないと入力して変換できずに悩んでしまったアレですがナニか
Re:平成 (スコア:0)
Javascriptか何かで「西暦-1900」を返してるの無かったっけ?
単純に「+1900」して使えば2000年を超えても問題無いのに、
下2桁だと勘違いして「'19'+」で表示してると、
2000年が19100年になってしまうとか。
Re: (スコア:0)
Re:平成 (スコア:2, 興味深い)
いや、全然 perl に限った話ではありません。
C言語の標準ライブラリ関数 localtime などは、
標準ライブラリ関数 time が返す「エポック秒」を、年月日時分秒な構造体に変換する関数なのですが、
その tm_year は、「西暦から1900を引いた数を表す」という仕様になってます。
(「西暦を2桁表現したもの」からその仕様を保ちつつ2000年対応した結果ですね)
そのため、perl に限らず、古くから存在する「言語環境」なんかでは、
この仕様をそのまま受け継いでいるものが多いです。
perl は、perl -e 'print ((localtime)[5])' で 109 が表示されますし。、
JavaScript でも、javascript:alert((new Date()).getYear()); は 109 と表示されます。
phpは、新しいだけあって、ちゃんと2009が返ってきますね。
Re:平成 (スコア:1)
rubyもTime.new.yearでは2009が返ってきます。
perlは正にstruct tm;の影響でしょうね。