TimeSpan span = dateTimePicker2.Value - dateTimePicker1.Value;
int diffDays = Convert.ToInt32(span.Days);
※宣告TimeSpan形式來計算兩者的天數差,取日期則用dateTimePicker物件抓值
如果想抓今天的日期則可以使用
DateTime.Now;
除了抓今天日期外還可以抓到現在是幾點幾分幾秒(因為C#只有DateTime沒有DATE)
◎自行計算兩個日期差距的年月日顯示(因為沒現成函式)
DateTime todayDate, endDate;
todayDate = dateTimePicker1.Value;
endDate = dateTimePicker2.Value;
int totalmonth;
totalmonth = (endDate.Year - todayDate.Year) * 12 + endDate.Month - todayDate.Month;
totalmonth += endDate.Day < todayDate.Day ? -1 : 0;
//totalmonth = (todayDate.AddMonths(totalmonth) > endDate) ? totalmonth - 1 : totalmonth;
year = totalmonth / 12;
month = totalmonth % 12;
day = (endDate - todayDate.AddMonths(totalmonth)).Days
1.宣告兩個DateTime變數todayDate和endDate,先抓取兩個日期做計算用不去動原本抓好的日期
2.宣告totalmonth去計算這兩者之前差幾個月(年換算成月,日則不管,純計算月數)
3.如果日期相減會變負數,需要借月份相減,則月份-1
※條件 ? A : B是C的運算子,意思是若條件成立則做A,不成立則做B,其實和單組if else同樣意思但更簡單
※註解行和前一行是同樣意思不同寫法而已
4.再來計算年和月,把總月數換算成幾年幾月
但實作上算出來會有點問題
若11/21和12/21,算出來結果會是1個月又0天
若11/21和12/22,算出來結果會是1個月又0天
若11/21和12/23,算出來結果會是1個月又1天(類推)
日相同時沒問題,但是差一天的時候開始會少1天
所以額外寫個例外處理
if (endDate.Day - todayDate.Day == 0) //微調結果
{
day = 0;
}
else
{
day = (endDate - todayDate.AddMonths(totalmonth)).Days + 1;
}
之後有找到原因再行處理吧,先這樣解決
沒有留言:
張貼留言