1

私のc++関数の1つは、他の変数の値に基づいていくつかの計算を行います。プログラムは、2つの別々のイベントの開始日と終了日を含む一連の情報を要求します。

p1.start_dateおよびp2.start_date; p1.end_dateそれぞれにp2.end_date日、月、年が格納されています。

combined.start_dateどちらが早く発生するか(p1.start_dateまたはp2.start_date)を設定する必要があり、combined.end_dateどちらが後で発生するかを設定する必要があります。

これを始めるのに助けをいただけますか?これが私が今持っているものです:http://pastebin.com/huJprtHj

4

3 に答える 3

2

少なくとも、関係する日付が適度に現在の1であると仮定して、月/日/年をに詰め込み、に変換するためにstruct tm使用すると、2つを直接比較できます。mktimetimt_ttime_t

より広い範囲の日付をサポートする必要がある/必要な場合は、レイガードナーのユリウス日ルーチンを検討してください。


  1. 少なくとも典型的なケースでは、1970年から少なくとも2038年までの日付が機能します。
于 2013-03-07T23:20:44.630 に答える
1

一般に、日付に基づく計算は2つの方法で実行できます。

  1. 日付を「ある固定日からの日数(1970年1月1日など)」に変換します。
  2. 日付コンポーネント(年、月、日)を使用します。

これがあなたがする必要があるすべてであるならば、各部分を(「最も高いものから」と)比較するだけでうまくいきます-あなたはdate1がdate2よりも小さいかどうかを知ることができる比較関数が必要です。

残りの質問は、本当に単純なプログラミングである必要があります。

編集:明確にするために:DATE計算の場合、設定された日付からの日数で問題ありません。システムライブラリ関数には、秒(および一部のシステムでは、数分の1秒)を秒単位の完全な時間で使用する関数があります。これは、時刻が関係しない日付を比較する場合には必要ありません。

于 2013-03-07T23:21:05.357 に答える
0

この関数を作成します。Date指定していないので、日付は、という名前のオブジェクトに格納されていると思います。

bool operator< ( const Date& left, const Date &right )
{
   // ...
}

次に、日付オブジェクトを、のような組み込みタイプであるかのように比較できますint

于 2013-03-07T23:20:37.093 に答える