藤原です。
そうですね、間違えてましたね。
DateTimeString[ SECOND_0 ]++;
if( DateTimeString[ SECOND_0 ] > '9' )
{
DateTimeString[ SECOND_0 ] = '0';
DateTimeString[ SECOND_10 ]++;
}
if( DateTimeString[ SECOND_10 ] > '5' )
{
DateTimeString[ SECOND_10 ] = '0';
DateTimeString[ MINUTES_0 ]++;
}
です。
と、これだけではなんなので、
char times[7];
char limit[7] = "235959";
int i;
/* このあたりで初期化 */
times[5]++;
for(i = 5; i >= 0; i--)
{
if (times[i] > limit[i])
{
times[i] = '0';
/* ここがいやらしい */
if (i != 0)
times[i - 1]++;
}
}
とか。
もちろん、間に、':' や '/' や '-' がある場合には使えません。
さらに一般化すると、
char times[] = "00:00:00";
char limit[] = "23:59:59";
int index[] = {7, 6, 4, 3, 1, 0, -1};
int i;
/* このあたりで初期化 */
times[index[0]]++;
for(i = 0; index[i] >= 0; i++)
{
if (times[index[i]] > limit[index[i]])
{
times[index[i]] = '0';
/* ここがいやらしい */
if (index[i + 1])
times[index[i + 1]]++;
}
}
なんてできことはできますが。このあたりはやりすぎでしょう。
これ、もともとの発想の違いは、
「正しい形を保持しつつ処理する」か、「処理をしたあとで、正しい形に
なおす」かの違いのような気もします。
お察しの通り、私は、「処理をする」→「つじつまを合わせる」という
流れです。そうすると、それぞれ独立して検証できるので。
そもそも、条件が複数重なると自沈する方ですから。
--
_/ -- Last 2251 hours until ATHENS 2004 Olympic Games -----------------
_/ FUJIHARA Keiichi
_/ E-Mail : keiichi@xxxxxxxxxxxxx <or> nagi@xxxxxxxxxxxxxxx
_/ URL : http://www.keiichi.fujihara.name/
----------------------------------------------+----- Luna Phase 22.65 --
PGP FingerPrint = 7CC3 4F95 8CC7 87D3 7178 C348 CD65 7F08 D68F 69F6