可以通过穿进去的起始时间,返回月份数;
如果天数不够一个月则不计入统计及0
下面为方法的代码
public int GetMonth(DateTime dtbegin,DateTime dtend)
{
int Month = 0;
// DateTime dtbegin = Convert.ToDateTime(txtworkday.Text.ToString()); //起始时间
// DateTime dtend = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //结束时间
if ((dtend.Year - dtbegin.Year) == 0)
{
if (dtend.Day - dtbegin.Day > 0)
{
Month = dtend.Month - dtbegin.Month;
}
else
{
Month = dtend.Month - dtbegin.Month-1;
}
}
if ((dtend.Year - dtbegin.Year) >= 1)
{
if (dtend.Month - dtbegin.Month < 0)
{
if (dtend.Day - dtbegin.Day > 0)
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month;
}
else
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month - 1;
}
}
else if ((dtend.Month - dtbegin.Month == 0) && (dtend.Year - dtbegin.Year >= 1))
{
if (dtend.Day - dtbegin.Day > 0)
{
Month = (dtend.Year - dtbegin.Year) * 12 ;
}
else
{
Month = (dtend.Year - dtbegin.Year) * 12 - 1;
}
}
else if ((dtend.Month - dtbegin.Month > 0) && (dtend.Year - dtbegin.Year >= 1))
{
if (dtend.Day - dtbegin.Day > 0)
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month ;
}
else
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month - 1;
}
}
else
{
if (dtend.Day - dtbegin.Day > 0)
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month + 1;
}
else
{
Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month + 1 - 1;
}
}
}
return Month;
}
DateTime workd = DateTime.Parse(txtworkday.Text.ToString());//startdate
DateTime nowd = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //enddate
TimeSpan ts = nowd - workd;
int getMonth = GetMonth(workd, nowd);
int yeardiff = getMonth / 12;//系統會用到
int monthdiff = (getMonth - 12 * yeardiff);//系統會用到
int daydiff = (nowd.Day - workd.Day);
string timespan = "相差:" + yeardiff.ToString() + "年" + monthdiff.ToString() + "月"
+ daydiff.ToString() + "天" + getMonth;