2つの時刻(文字列)を比較したいことはしばしばありますが、
C言語の場合、面倒でもstrptime()でstruct tm構造体に変換して、さらにmktime()でtime_t型に変換して比較します。
内部的にはtime_t型でデータを持ちまわっていて、必要なときにユーザフレンドリなフォーマットに変換したりします。
C言語の仲間だとまぁ、そんなに違いはないかなぁ。と思うのです。
さて、仕事中、日付の範囲指定があって、開始日よりも終了日の方が日付が古い場合のエラーチェックをどうやってるんだろうとソースを追っていったところ、それぞれの日付を"YYYYMMDD"というフォーマットの文字列にして、チェック関数に渡してました。そのチェック関数で何をやってるかというと。。。
なんと!
atoi()で文字列を数値に変換して、比較していたのです。
時刻を取り扱う型がこの言語にはないのかしら?なんて調べてたら、あるじゃない。ちゃんと。いや、ないわけないのさ。もともとはC言語なんだから。
既存コードは一切手をつけない。というポリシーがあるから、苦渋を飲んで我慢するけど。
0 件のコメント:
コメントを投稿