-3

こんにちはみんな私は小数として、2つの日付の差を取得する必要があります。

例:2010年2月13日と2011年6月10日の違いは15.87か月です。

これをc#でどのように達成しますか?

4

4 に答える 4

5

概算が必要な場合は、次のように実行できます。

var first = new DateTime(2010, 2, 13);
var second = new DateTime(2011, 6, 10);
var result = second.Subtract(first).Days / (365.25 / 12);

Console.Write(result);

この結果は次のようになります。

15,8357289527721
于 2012-09-04T08:25:52.963 に答える
2
   public static int diffMonths(this DateTime startDate, DateTime endDate)
    {
            return (startDate.Year * 12 + startDate.Month + startDate.Day/System.DateTime.DaysInMonth(startDate.Year, startDate.Month))
                    - (endDate.Year * 12 + endDate.Month + endDate.Day/System.DateTime.DaysInMonth(endDate.Year, endDate.Month));
    }

DaysInMonthを使用して、その月の進捗状況を計算し、endDate--startDateを減算します。

于 2012-09-04T08:24:52.160 に答える
1

これを試して:

string fmt = "yyyy-MM-dd";
DateTime first = DateTime.Today;

for (int i = 0; i < 45; i++)
{
    DateTime second = first.AddMonths(3).AddDays(i);


    int wholeMonths = ((second.Year - first.Year) * 12) + second.Month - first.Month;
    DateTime firstPlusWholeMonths = first.AddMonths(wholeMonths);

    double fractMonths;
    if (firstPlusWholeMonths == second) fractMonths = wholeMonths;
    else
    {
        double diff = second.Subtract(firstPlusWholeMonths).TotalDays;
        fractMonths = wholeMonths + (diff * 12 / 365.25);
    }

    Console.WriteLine("From {0} to {1} is {2} months.", first.ToString(fmt), second.ToString(fmt), fractMonths.ToString("0.00000000"));
}
于 2016-04-23T06:02:55.047 に答える
0

これはあなたのために働くでしょう。ただし、正確な回答が必要です。15.87か月間、月の日数の列挙型を個別に維持する必要がありますDateTime dt1 = new DateTime(2010、02、13); DateTime dt2 = new DateTime(2011,06,10);

       TimeSpan ts = dt2.Subtract(dt1);
       double days = (double)ts.TotalHours / (24);
       double months = days / 30.4;
于 2012-09-04T08:51:59.170 に答える