我正在尝试将日期添加到日期并根据上个月填充文本框。对于那些在31日(甚至2月28日)结束的月份,这是有效的。但是,如果前一个月在30日结束,而下个月在31日结束,则可能是一天短期或一天。例如:
上一个开课日期:4/1/2017
上一个结束日期:4/30/2017
新开始日期:2017年5月1日
新结束日期:应该 5/31/2017
这是我的代码:
// Set the Start Date
DateTime dtNewStartDate;
dtNewStartDate = Convert.ToDateTime(txtRecentBeginDate.Text).AddMonths(1);
txtNewStartDate.Text = dtNewStartDate.ToString();
// Set the End Date
DateTime dtNewEndDate;
dtNewEndDate = Convert.ToDateTime(txtNewStartDate.Text).AddMonths(1);
txtNewEndDate.Text = dtNewEndDate.ToString();
这产生的结束日期为6/1/2017而不是5/31/2017
编辑:我能够从https://social.msdn.microsoft.com/Forums/en-US/218260ec-b610-4fa6-9d1b-f56f3438b721/how-to-get-the-last-day-of-a-particular-month?forum=Vsexpressvcs找到我想要的内容。 此解决方案可以解决闰年问题,并在任何情况下获得正确的月份最后一天。这就是我想出的:
// Set the End Date
int intYear = dtNewStartDate.Year;
int intMonth = dtNewStartDate.Month;
int intNumberOfDays = DateTime.DaysInMonth(intYear, intMonth);
DateTime dtNewEndDate = new DateTime(intYear, intMonth, intNumberOfDays);
txtNewEndDate.Text = dtNewEndDate.ToString();
答案 0 :(得分:2)
您可以获得该月的最后一天。
DateTime today = DateTime.Today;
DateTime endOfMonth = new DateTime(today.Year,
today.Month,
DateTime.DaysInMonth(today.Year,
today.Month));
答案 1 :(得分:0)
这就是我通常做的事情:只需从开始日期开始计算年份和月份,根据该日期创建一个新日期,添加一个月并减去一天,最后是下个月的最后一天:: < / p>
DateTime dtNewEndDate = new DateTime(dtNewStartDate.Year, dtNewStartDate.Month, 1)
.AddMonths(1)
.AddDays(-1);