• ベストアンサー
  • 困ってます

総日数を求める

引数として与えた西暦・月日から現在の日付までの 総日数を調べる関数が紹介されているページがあれば 教えて下さい。 自分ならこう書く、なんていうのでも結構です。

  • alx
  • お礼率97% (112/115)

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数541
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4

まず、cftime(),mktime() 等で指定日の日付情報をtime_t型にします。 その後、time()で、time_t型の現在時刻を取得します。 取得したそれぞれの値に32400を足してから86400(1日の秒数)で割れば(小数点以下きり捨て)、日本時間で1970年1月1日から何日経過したかという値になりますから、あとは引き算するだけです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 mktime() を利用することにしました。 アドバイスありがとうございます。

関連するQ&A

  • エクセルで日数から何カ月かを算出する方法

    エクセルで日数を算出する方法は、日付(西暦)ー日付(西暦)で書式設定を表示設定の数値にすればでるのは分かったのですが、その日数が何カ月かを表示するための方法(数式もしくは、設定)を教えてください。

  • 日数の計算です

    エクセルの日付の計算です、初日が2007/11/10から月末までの日数を出す場合なのですが、2007/11/30を入力せず(日付の引き算ではなく、という言い方で正しいのでしょうか?)に、始まりの日から月末までの日数を求めるには、どのような関数になるのでしょうか?よろしくお願いします。

  • 日数計算の「-」表記に対する処理方法について

    [パソコン環境のご紹介] アプリケーション環境:ACCESS2007 OS環境:Windows10 [困りごとの内容] 食材管理データベース「消費期限管理」を作りましたが、日数計算の「-数(日)」表記に対する処理方法が分からず困っています。 [やりたいこと] 1、テキストボックス「期限」の日数表記が「-数(日)」になったときに「 0 」か  「空白」で表示させたいと思っています。 2、現在の設定では「数値」のみの表記ですが「日」を追加が可能であれば実現した  いと思います。 [やっていること(オブジェクトの一部にて紹介)] 食材管理フォームに以下のテキストボックスがあり、消費期限日までの日数を表示しています。 ・日付 名前:txt日付(西暦) ・消費期限日 名前:期限日(西暦) ・消費期限日数 名前:期限 ※消費期限日数(期限)テキストボックスのコントロールソースに以下の式を入力しています。 =[期限日]-[txt日付] 以上ですが、よろしくお願いします。

その他の回答 (3)

  • 回答No.3
noname#5537
noname#5537

汎用的にやるなら, 各日付のユリウス日を求めて,引き算すれば OK です。 ごく最近の年だけでよければ mktime を使うのが簡単です。

参考URL:
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/u/ut2jd.html, http://www.okweb.ne.jp/kotaeru.php3?q=644522

共感・感謝の気持ちを伝えよう!

質問者からのお礼

URLを御紹介いただきありがとうございました。 よく拝見させていただきました。

  • 回答No.2

どのようなプラットフォームでしょうか? WindowsでMFCが可ならば、 COleDateTime dt1( yyyy, mm, dd ); COleDateTime dt2( yyyy, mm, dd ); COleDateTimeSpan span( dt1 - dt2 ); printf( "%d 日間です", span.GetTotalDays() ); なんてかけます。 汎用性は無いですが、、、

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 MFCではないんですが、MFCを使う時の参考にさせていただきます。

  • 回答No.1
  • Jitta
  • ベストアンサー率42% (69/161)

西暦l年における、1月1日から、n月m日までの日数を求める関数を作る(funcA) 西暦l年における、総日数を求める関数を作る(funcB)←つまり、閏年判定 funcB(入力年)-funcA(入力日)で、入力日からその年の末までの日数 funcA(今日)で、今年の今日までの日数 funcBを、入力年の翌年から今年の前年までを回して足す ※入力日や今日をカウントするかどうかで調整のこと

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。参考にさせていただきます。

関連するQ&A

  • エクセル2002で日数計算

    二つのセルに入れた日付"04/11/25"と"05/7/10"の日数計算、出来れば、土日を除く関数等があれば教えていただけませんでしょうか。

  • エクセルで入力された西暦の月日の前ゼロを消す

    生年月日が西暦で入力されています。 1995/04/11という感じで何百もあります。 これを月日の前ゼロなしにしたいのです。 1995/4/11というように。 関数を教えてください。 今後は書式の設定をしますが 現在は文字列になっていてセルの書式設定で 日付に変えてもかわりません。 よろしくお願いします。

  • EXCELでの日数計算法

    WINDOWS XPです。EXCELでa4セルに数値で「3/15」、となりのb4セルに「5/20」と日付を入れています。この日数計算をするためにc4セルで「DATEDIF関数」を使おうとしたら使えません。関数の一覧を見たらDATEDIF関数がありません。この場合どうしたら所要日数が計算できるのでしょうか。

  • 日数算出SQL

    すみません教えてください。 DB→Oracle9iで「日付A」と「日付B」の間の日数を表示させようとしているのですが、うまくいきません。 参考書などでは、「Months_Between関数」でも試してみたのですが、うまくいきません。単純なやりかたあればおしえていただきたいのですが、よろしくお願いいたします。

  • VBAで月の日数を表示させたい

    EXCEL2000でVBAを作成しています。 シートのセルに =EOMONTH(T4,1) という公式がはいっています。表示は平成17年10月分になっています。 ここのセルの日付に応じて月日数を表示したいのです。 何をしたいかというと 単価×31(月の日数)の計算をするため月日数をセルに自動入力したいのです。 よろしくお願いします。

  • エクセルで残り日数を計算させる

    エクセルで関数を使用し10/1までの残り日数を表示させたいのですが どのような計算式を作成すれば宜しいでしょうか? A1に4月20日と記入した場合  A列に月日を記入しB列に残り日数を表示させたいです。   A列     B列 3 4月13日   7日 4 5 4月15日   5日     ・    ・     ・    ・  このようになる関数を教えて下さい。

  • 日付を使った計算式を教えてください

    [環境紹介] WINDOWS10、ACCESS2007(令和表示はテンプレートを使用して表示中) 「令和表示の式です」 =DLookUp("和暦","T_和暦マスタ","開始年月日<= #" & [txt日付] & "#and 終了年月日>=#" & [txt日付] & "#") [やりたいこと] 過去や未来の対象日や日数を下記のやり方で実施しています。「曜日」と「和暦」の表示方法(式)が分からずアドバイスをお願いできませんでしょうか。今の知識レベルで質問内容に対する可能可否の判断ができませんので、無理難題の質問内容でしたらご理解とご了承を賜りたいと思います。 [やっていること] 事前に設計しないでテーマを増やしたこともあり、テキストボックスの名前に整合性がありません。将来新たなデータベースを作る時(自分で納得できる知識が習得・・・)の課題と認識しております。 ■起点日→幾日後の月日(起点日から後日の西暦日を表示) テキストボックス名:西暦2「カレンダー入力」 テキストボックス名:日数2 手打ち テキストボックス名:対象2 コントロールソース「 =[西暦]+[日数] 」 ■起点日→対象日迄の日数(起点日から後日の日数を表示) テキストボックス名:開始「カレンダー入力」 テキストボックス名:終了 手打ち テキストボックス名:日数 コントロールソース「 =[着地日]-[開始日] 」 ■起点日→幾日前の月日(起点日から前日の日数を表示) テキストボックス名:西暦55「カレンダー入力」 テキストボックス名:日数55 手打ち テキストボックス名:対象55 コントロールソース「 =[西暦1]+[日数1] 」 [やってみたこと] ■起点日→幾日前の月日(起点日から前日の日数を表示)を例にとりあえず曜日でのチャレンジです。 テキストボックス名:西暦1「カレンダー入力」 テキストボックス名:日数1 手打ち テキストボックス名:対象1 コントロールソース「=[西暦1]+[日数1] テキストボックス名:曜日1 コントロールソース「 =WeekdayName(Weekday(対象1)) 」 結果はエラーでした。 以上ですが、宜しくお願いします。

  • 教えてください3

    初心者なのでわかりやすくお願いします。 生年月日と今日の日付を読み込み、生年月日から今日までの日数を計算して出力するプログラムを制御文を用いて作成せよ。 配列、ポインタは使用禁止とする。関数は用いてもよい。 うるう年とは4で割り切れかつ100で割り切れない年、及び400で割り切れる年はうるう年である。 ただし、 1.年月日は西暦とし、入力できる年月日は西暦1800年1月1日以降とする 2.年月日が正しい範囲内にないときは、入力データ誤りとみなしメッセージを出力して終了 3.生年月日が今日の日付より後のときも、誤りとみなし メッセージを出力して終了とすること。 <実行結果> ** 生年月日を入力してください ** 1985 2 4 ** 今日の日付を入力してください ** 2010 6 12 1985年2月4日から今日までの日数は 9259日です ちなみに西暦1年1月1日から今日までの日数は 733935日です さらに西暦1年1月1日から生年月日までの日数は 724676日です <実行結果> ** 生年月日を入力してください ** 12 3 4 ** 今日の日付を入力してください ** 123 4 5 ** 入力した年月日が正しい範囲内にありません  <実行結果> ** 生年月日を入力してください ** 1987 1 2 ** 今日の日付を入力してください ** 1800 1 1 ** 生年月日が今日の日付より後になっています  **

  • エクセルで特定の曜日の日数を調べる。

    毎回、適切なご回答ありがとうございます。 以下のことを教えてください。 出勤表を作っています。 A列に日付 B列に曜日 C列に出勤時間を記入します。 そこで教えていただきたいのですが、 例)水曜日の出勤日数X1,000円と土曜日の出勤日数X800円  というのを関数であらわすとしたらどうしたらいいのか分かりません。 どうぞよろしくお願いします。

  • エクセルで実働日数を計算したい

    エクセルで勤怠管理の表を作り、 何月何日に何時間働いたか、についての一覧を作成しました。 その一覧から、簡単に実働日数だけを集計する関数を 入力するにはどのようにすればよいでしょうか? 具体的には例えば 日付  午前  午後  合計時間 7月16日 3    4    7 7月17日(空欄)(空欄) 7月18日 3   (空欄)  3 ・・・ 等の表になっており、 このうち仕事時間が記入されている 7月16日と18日だけをカウントして 2日、という実働日数を出したいのです。 土日が休日、といった感じではなく、 不定期に休みが入るバイトの管理についての 実働日数を出したいのです。 各日付の時間数は午前、午後の合計関数で表示されていますので 合計時間数のセルに計算値が入っている場合のみを カウントすればいいのだと思いますが、 関数の知識がないため、該当関数がわかりません。 どなたかお分かりになる方、 ご教授をお願いいたします。