hamayan です。
FUJIHARA> もちろん、間に、':' や '/' や '-' がある場合には使えません。
FUJIHARA>
FUJIHARA> さらに一般化すると、
FUJIHARA>
FUJIHARA> char times[] = "00:00:00";
FUJIHARA> char limit[] = "23:59:59";
FUJIHARA> int index[] = {7, 6, 4, 3, 1, 0, -1};
FUJIHARA> int i;
FUJIHARA>
FUJIHARA> /* このあたりで初期化 */
FUJIHARA>
FUJIHARA> times[index[0]]++;
FUJIHARA> for(i = 0; index[i] >= 0; i++)
FUJIHARA> {
FUJIHARA> if (times[index[i]] > limit[index[i]])
FUJIHARA> {
FUJIHARA> times[index[i]] = '0';
FUJIHARA> /* ここがいやらしい */
FUJIHARA> if (index[i + 1])
FUJIHARA> times[index[i + 1]]++;
FUJIHARA> }
FUJIHARA> }
FUJIHARA>
FUJIHARA> なんてできことはできますが。このあたりはやりすぎでしょう。
そうそう、ループ処理も考えてみると面白いですね。
FUJIHARA> これ、もともとの発想の違いは、
FUJIHARA> 「正しい形を保持しつつ処理する」か、「処理をしたあとで、正しい形に
FUJIHARA> なおす」かの違いのような気もします。
私の場合は、「誰の為の時刻表現なのか?」と言う部分に着目します。
2004/5/12 09:15:00
と表現するのはあくまでも人間の為で、必ずUIが存在します。
でもこの表現は、コンピューターにとっては有り難迷惑です。逆に1970年からの通算
秒を人間が見せられても、???と言う事になります。
内部的に通算秒で処理するか、ASCIIで西暦表現で処理するか、または併用す
るかは、システムを設計する人に決めてもらいましょう。
だから、私のだらだらっとしたプログラムは、「世の中にはそんな人も居る!」
程度の認識でね、お願いします。