6

2つの日付を組み合わせて日数をカウントします。図書館の本の期日と返却日などの2つの日付を比較する場合は、この方法で日数を取得できません。

        int TotalDay;
        DateTime due = OldDate;

        int day = due.Day;
        int nday = DateTime.Now.Day;
        int mnt = due.Month;
        int nmnt = DateTime.Now.Month;
        int yr = due.Year;
        int nyr = DateTime.Now.Year;
        if (nyr <= yr)
        {
            if (nmnt <= mnt)
            {
                if (nday > day)
                {
                    TotalDay = nday - day;
                }
            }
            else
            {
                TotalDay = nday - day;
                m = nmnt - mnt;
                TotalDay = d + (m * 30);
            }
        }
        else
        {
            TotalDay = nday - day;
            m = nmnt - mnt;
            TotalDay  = d + (m * 30);
            int y = nyr - yr;
            TotalDay  = d + (y * 365);
        }
4

3 に答える 3

15

TimeSpanを使用する

TimeSpan ts = dateTime1 - dateTime2;

ts.TotalDays日数の違いがわかります。

あなたの場合dueは期日でDateTime.Nowあり、現在の日付です。あなたは使用することができます:

TimeSpan ts = DateTime.Now - due;

またはTimeSpan.TotalDaysプロパティを使用します:

TimeSpan ts = DateTime.Now.Subtract(due);

double NumberOfDays = ts.TotalDays;
于 2012-08-07T10:03:07.187 に答える
3

他の回答に示されているように使用することもできTimeSpanますが、時刻に注意する必要があります。あなたは実際にこれらを日付または時間のある日付として考えようとしていますか?タイムゾーンはどうですか?両方に「ローカル」DateTime値を使用していますか?

これらDateTimeすべてを処理することはできますが、状況は不明確になります。私は個人的に野田タイムを使用します(これは私自身のライブラリなので、誰も驚かないはずです...)

LocalDate startDate = ...;
LocalDate endDate = ...;

long days = Period.Between(startDate, endDate, PeriodUnits.Days).Days;

「今日の日付」を見つけるには、適切なタイムゾーンも知っている必要があることに注意してください。(DateTime.NowそしてDateTime.Today、コードが実行されているシステムタイムゾーンを想定しますが、それはあなたが望むものであるかもしれませんし、そうでないかもしれません。)

于 2012-08-07T10:12:39.587 に答える
2

あなたが必要ですTimeSpan

Timespan t = ReturnDateTime - DateTime.Now;

次に、

t.Days

残り日数を計算します。

于 2012-08-07T10:05:15.550 に答える