C#中计算两个时间差的方法
背景:如图所示,起始日期的时间控件名为loanStartDate,终止日期的时间控件名为loanEndDate,约定期限是文本控件,名为limitDate。(这里的控件都是C#控件类型)
目的:当改变起始日期或者终止日期时,自动计算出约定期限,两个时间的月份要是一个月多一天就记为两个月。以月份为单位(自然月)
可能有人知道python带有时间函数,datetime和time模块,deltatime有days方法和second方法等,但是难以安自然月的方式计算出相差的月数,早期我的做法是
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=""
但是这种方法不是以自然月形式做的,现在对其做了改正,如下:
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民工,转载请注明原文链接:https://www.cnblogs.com/kook2007/articles/2964942.html