2006/12/10

時刻の扱い方

2つの時刻(文字列)を比較したいことはしばしばありますが、
C言語の場合、面倒でもstrptime()でstruct tm構造体に変換して、さらにmktime()でtime_t型に変換して比較します。
内部的にはtime_t型でデータを持ちまわっていて、必要なときにユーザフレンドリなフォーマットに変換したりします。

C言語の仲間だとまぁ、そんなに違いはないかなぁ。と思うのです。

さて、仕事中、日付の範囲指定があって、開始日よりも終了日の方が日付が古い場合のエラーチェックをどうやってるんだろうとソースを追っていったところ、それぞれの日付を"YYYYMMDD"というフォーマットの文字列にして、チェック関数に渡してました。そのチェック関数で何をやってるかというと。。。

なんと!
atoi()で文字列を数値に変換して、比較していたのです。

時刻を取り扱う型がこの言語にはないのかしら?なんて調べてたら、あるじゃない。ちゃんと。いや、ないわけないのさ。もともとはC言語なんだから。

既存コードは一切手をつけない。というポリシーがあるから、苦渋を飲んで我慢するけど。

0 件のコメント: