日付AからBまでの間の日付を列挙する関数「日付列挙」を作って、初心者掲示板でサンプルとして提示しました。
- 「日付列挙」関数
# 日付AとBの間の日付を全て列挙。列挙するのは、A,A+1日,……,B-2日,B-1日 まで ●日付列挙({文字列}Aから{文字列}Bまでの) 日付とは文字列=A。返り値とは配列 日付がBでない 間 返り値に日付を配列追加 日付=日付に`+0/0/1`を日付加算 返り値を戻す
で、例外処理もしてないカップ麺コードなので、A>Bで指定したり(中略)しないように
、と本来考慮すべき例外について一言だけ付け加えておきました。そしたら見事に質問者さん、もしA≦Bならば
という一文を付け加えて完成したプログラムをレスしてくれました。最初はしまった、と思いましたよ。日付データをA≦B
で比較できるはずがないと思ってたからです。あ〜、きちんと日本語で説明すべきべきだった、とちょっと後悔…… ところが、あれ?ちゃんと比較できてる!
僕は単純に日本語的としてA>B
と説明しただけであって、まさか日付データに対して比較演算子が使えるとは思ってなかったわけですが、実は日付データ、もっと言うと文字列一般にも比較演算子を使うことができるのです。まぁもう既に気付いてる人もいるかもしれませんが、「文字列比較」「文字列辞書順比較」という命令があるので、これが使われてるわけですね(恐らく前者の方かな)。
- 日付の順序比較
ある日=`2008/08/16` もしある日<今日ならば 「{ある日}は今日よりも過去です」と言う 違えば 「{ある日}は今日、もしくは今日よりも未来です」と言う
あくまで文字コードとして比較しているわけですから、被比較項の日付どうしがきちんと性質の良いフォーマットに統一されている必要があります。なでしこの日付関連の命令は「yyyy/mm/dd」というフォーマットを採用しているのでOKですが、違うフォーマットでは例えば`1月2日`>`1月10日`
は真と判断されてしまいNGです。
ところでこれって日記ってよりもTipsに書くべきですね。まぁ、そのうち移植するときのための備忘録ということで(汗;;