2017-10-10 18 views
0

で2つのユーザー入力の日付の差:C#の月と年

static void Main(string[] args) 
    { 
     Dates(); 
     Console.ReadLine();   

    } 

    public static void Dates() 
    { 

     Console.WriteLine("Enter any date: "); 
     DateTime firstDate = DateTime.Parse(Console.ReadLine()); 
     Console.WriteLine("Enter another date: "); 
     DateTime secondDate = DateTime.Parse(Console.ReadLine()); 

     TimeSpan diff = firstDate - secondDate; 

     Console.WriteLine("Days : " + diff.TotalDays.ToString()); 
     Console.WriteLine("Hours : " + diff.TotalHours.ToString()); 
     Console.WriteLine("Minutes : " + diff.TotalMinutes.ToString()); 


    } 

私は間の月と年の差を計算する方法を見つけ出すことができませんでした2つの日付。誰も助けることができますか?また、毎回正の整数を返すようにするにはどうすればよいですか?

+2

あなたはそれをどうしますか?そのようにしてください。 –

+0

質問の最後の部分は、 'TimeSpan diff =(firstDate - secondDate).Duration()'です。 –

+0

なぜいつも肯定的な結果を返す理由はいつこのデータを送信しますか? –

答えて

0

これは質問の最初の部分に対する答えです。年月日(および日数)の2つの日付の差を計算します。問題は多少あいまいなので、私はいくつかの前提を立てました。

私が年齢を計算するときに一般的に意味するように、私は「違い」を取っています。同様に、開始日が5/12/2014で終了日が2/16/2017の場合、その差は2 years, 9 months, and 3 daysと計算されます。あなたはドリフトを得る。

第2に、私は時間を考慮しません。私がDateTimeオブジェクトを作成したのは、year,, and日だけです。だからここ

は行く:あなたがあなたの指に数えていた場合

public static void DateTimeDiff(DateTime dt1, DateTime dt2, out int years, out int months, out int days) 
{ 
    DateTime start = dt1 < dt2 ? dt1 : dt2; 
    DateTime end = dt2 > dt1 ? dt2 : dt1; 

    years = 0; 
    months = 0; 
    days = 0; 

    while (start.AddYears(1) < end) 
    { 
     start = start.AddYears(1); 
     years++; 
    } 

    while (start.AddMonths(1) < end) 
    { 
     start = start.AddMonths(1); 
     months++; 
    } 

    while (start.AddDays(1) < end) 
    { 
     start = start.AddDays(1); 
     days++; 
    } 
}