質問: C言語の質問です。YYYY/MM/DD HH:MM:SSで記述された文字列があります。この文字列に1秒加算した場合の文字列を求めるロジックのサンプルはありませんでしょうか? 例)2004/12/31 23:59:59 ⇒ 2005/01/01 00:00:00 というように。(閏年の考慮は必須です)
回答: うるう年かどうかを判定 : www.dinop.com うるう年の判定方法です。 後は単純に足し算をするだけです。 ロジック的には... 秒が59でしたら00にして分に1を加算。(加算する前の)分が59だった場合には00にして時に1を加算。時が23だったなら日に1を加算。日が月末(毎月のデータを配列で用意するなりして判定。うるう年に注意)だったら1にして月を加算。月が12だったら年を加算。 という形になります。しかし業務用途にせよ1番の方の方法を取るのが普通だと思います。バグの可能性も減らせますし。もちろん仕様で要求されていれば別ですが。 ���{�W�����v���W�F�N�g�@Information of Leap second このロジックとは別に年によってはうるう秒が加算される場合があります。 2005年12月31日23時59分59秒に1秒足すと 2005年12月31日23時59分60秒になります。 うるう秒は不定期に加算されるため、過去のうるう秒は分かりますが、数十年先の将来に関しては不明なため、計算で誤差が生じます(これはどうしようもありません)。