- ベストアンサー
経過日数を調べたい
自分の誕生日から現在までの経過日数を算出するには、どういう関数を使ったらよいのでしょうか。 閏年の計算とかもあって、結構難しいプログラムですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
それほど難しくありません。 こんな方法はどうでしょうか。 まず、cftime(),mktime() 等で誕生日の日付情報をtime_t型に変換します。 その後、time()で、time_t型の現在時刻を取得します。 time_t型は、日本時間で1970年1月1日午前9時から何秒経ったかを表すもので、実体は通常long型です。 取得したそれぞれの値に32400(9時間の秒数)を足してから86400(1日の秒数)で割れば、日本時間で1970年1月1日から何日経過したかという値になりますから、あとは引き算するだけです。 (日本以外の場合は32400のところを変えてくださいね) 上記の関数は、#include <time.h> してから使ってくださいね。
その他の回答 (2)
- Gotisan
- ベストアンサー率15% (4/26)
エクセルか何かの計算式の話でしょうか?
お礼
質問しているカテゴリーをご確認いただきたいのですが。。。
- BILLY-J
- ベストアンサー率57% (60/105)
こんばんは。 プラットフォーム等不明ですが、WIN上でVC系でMFCを使って良いなら CTimeSpan というクラスで計算するのが簡単です。 一般的なCランタイムなら struct tm 構造体で日付を指定して mktime 関数で time_t 値(1970/1/1 00:00:00 からの経過秒)に変換します。 これを誕生日と現在日付で行って差を取れば誕生日からの経過秒に。 後は秒→分→時→日と変換計算していけば経過日になります。 どちらも閏年の計算は内部処理してくれていると思います。 #参考URLの欄には入りきらなかったので… http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_ctimespan_class_members.asp
お礼
ありがとうございました。 参考になります。
お礼
ありがとうございました。 よくわかりました。