0

日付の比較を行う際に助けが必要です。プログラムは、ユーザーが入力日付を入力すると動作し、その日付でテキスト ドキュメント ファイルと比較します。日付がユーザー入力日付の間にあり、それがドキュメントの日付と一致する場合、それが実行されます.. if の代わりにこのケースに switch ケースを使用することを考えています..それは可能ですか?

if (date_compare(tld->begin, d) > 0 && //compare user input start date with actual date.txt begin input date
        date_compare(tld->end, d) < 0) //compare user input end date with actual date.txt input date
    return 0;
4

1 に答える 1

0

日付の計算と比較にいくつかのライブラリを使用することを検討します。特にロケールを使用して、本格的な製品コード用に適切にコーディングするのは非常に難しい場合があります。閏年から始まり、閏秒を経て、上位の質問の 1 つのように真珠に変化します(1927 年に) この 2 回を引くと、奇妙な結果が得られるのはなぜですか? .

簡単な初心者には、chronoユーティリティの標準ライブラリdifftimeを使用することをお勧めします。

あなたが示したのは私にとっては問題ないようで、でif簡単にラップできます。difftimedate_compare

しかし、2つの懸念があります。

date_compare のオペランドの順序は? difftime署名は です。double difftime( time_t time_end, time_t time_beg );これは、使用するものとは反対のようです。それ以外の場合、ステートメントは論理的に常に false になります。

また、dが内部(tld->start; tld->begin)にあるかどうかを確認しているようで、そうであれば で終了し0ます。言い換えれば、0ファイルが日付間隔に収まると戻ります。これが意図されていることを願っています。

于 2013-10-22T11:45:12.573 に答える