web-dev-qa-db-ja.com

2つの日時フィールドを減算して、残り日数の差を取得します

誰かが私が2つの日時フィールドを減算して残りの日数差を取得するのを手伝うことができれば幸いです。

30
Jobi

使用する

TimeSpan

DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
TimeSpan travelTime = arrival - departure;  
5
rahul

最も簡単な方法は、TimeSpan()を使用することです。このSubtract関数は、期間に関して2つの日付の差を返します。これで、日、月などのフィールドを取得できます。日にアクセスするには、サンプルコードを使用します。

VB.Netコード;

    Dim tsTimeSpan As TimeSpan
    Dim ldDate1 as Date
    Dim ldDate2 as Date
      'Initialize date variables here
       tsTimeSpan = ldDate1 .Subtract(ldDate2)
       Dim NumberOfDays as integer = tsTimeSpan.days

C#.Netコード;

    DateTime lDate1;
    DateTime lDate2;
    TimeSpan tsTimeSpan ;
    int NumberOfDays;
      //Initialize date variables here
      tsTimeSpan = ldDate1 .Subtract(ldDate2);
      NumberOfDays = tsTimeSpan.days;
4
Vijay Balkawade
DateTime dt1 = new DateTime(2009,01,01,00,00,00);
DateTime dt2 = new DateTime(2009,12,31,23,59,59);

int days = (dt2 - dt1).Days;
2
Jesper Palm

日数差

これらの答えは、2つのSystem.TimeSpanフィールドを減算した結果であるSystem.DateTime構造体からintとして日数を取ります...

クイックアンサー-日数の差を取得します。

        int numDaysDiff = date2.Subtract(date1).Days;

代替回答-Math.Abs​​を使用して、日付の場合に備えて、負の数ではないことを確認しますいずれかの順序で提供される場合があります。

        int numDaysDiff = Math.Abs( date2.Subtract(date1).Days );

using System名前空間で仕上げるためのサンプルデータ:

        // sample data
        DateTime date1 = DateTime.Now;
        DateTime date2 = DateTime.Now.AddDays(10);

MSDNリファレンス(およびその他のサンプルコード):

2
John K
DateTime theDate = DateTime.Today;
int datediff = theDate.Subtract(expiryDate).Negate().Days;
if expiryDate > theDate then you get Negative value: -14
expiryDate is less than theDate then you get positive value: 14

次のようなシナリオで明らかにこれが必要な場合があります

  1. 有効期限の14日前に通知メールを送信する
  2. 有効期限の14日後に別の通知メールを送信する

負の値になる可能性のある差が必要です

2
Mvg Developer

TimeSpan を見てください。

1
Myles

時間セクションを無視して正確な日数を取得するには

    DateTime d1 = Convert.ToDateTime(DateTime.Now.ToShortDateString());
    DateTime d2 = Convert.ToDateTime(DateTime.Now.AddDays(46).ToShortDateString());

    var days = Convert.ToInt32(d2.Subtract(d1).TotalDays)
0
PatWill