C#中計算兩個時間差的方法
背景:如圖所示,起始日期的時間控件名為loanStartDate,終止日期的時間控件名為loanEndDate,約定期限是文本控件,名為limitDate。(這里的控件都是C#控件類型)
目的:當改變起始日期或者終止日期時,自動計算出約定期限,兩個時間的月份要是一個月多一天就記為兩個月。以月份為單位(自然月)
可能有人知道python帶有時間函數(shù),datetime和time模塊,deltatime有days方法和second方法等,但是難以安自然月的方式計算出相差的月數(shù),早期我的做法是
def DateDiff(a,b,c): if a=="month": m=abs((c-b).Days/30) if a=="day": m=abs((c-b).Days) if a=="year": m=abs((c-b).Days/365) return m if(loanEndDate.SelectedDate>DateTime.Parse("1900-01-01") and loanStartDate.SelectedDate>DateTime.Parse("1900-01-01")): limitDate.Text=str(DateDiff("month",loanStartDate.SelectedDate,loanEndDate.SelectedDate))+" 個月" else: limitDate.Text=""
但是這種方法不是以自然月形式做的,現(xiàn)在對其做了改正,如下:
import datetime,time#其實導入python的這個模塊沒用到 if(loanEndDate.SelectedDate >DateTime.Parse("1900-01-01") and loanStartDate.SelectedDate >DateTime.Parse("1900-01-01")):#只是為了判斷是否輸入了起始日期和終止日期 year=loanEndDate.SelectedDate.Year-loanStartDate.SelectedDate.Year#--C#中DateTime類型有Year、#Month、Day等屬性 month=loanEndDate.SelectedDate.Month-loanStartDate.SelectedDate.Month day=loanEndDate.SelectedDate.Day-loanStartDate.SelectedDate.Day #考慮閏年情況, if(loanEndDate.SelectedDate.Year%4==0 and loanEndDate.SelectedDate.Month==2 and loanEndDate.SelectedDate.Day==29 and loanStartDate.SelectedDate.Month==2 and loanStartDate.SelectedDate.Year %4 !=0): if(day>1):#若終止日期是閏年的2月29,其實日期是非閏年的2月份, month=month+1 else: if(day>0): month=month+1 limitDate.Text=str(year*12+month)+" 個月" else: pass
輕松搞定。
本文來自博客園,作者:GIS民工,轉(zhuǎn)載請注明原文鏈接:http://www.rzrgm.cn/kook2007/articles/2964942.html

浙公網(wǎng)安備 33010602011771號