升级到VS 2010后,我得到了这个FormatException。没有什么特别的。 代码:
private void ManageDateEditControls()
{
apoDateEdit.DateTime = DateTime.Parse(string.Format("01/{0}/{1}", DateTime.Now.Month-1, DateTime.Now.Year));
eosDateEdit.DateTime = DateTime.Parse(string.Format("{0}/{1}/{2}", GetLastDayOfMonth(DateTime.Now.Month + 1),
DateTime.Now.Month - 1, DateTime.Now.Year)); <-- FormatException occurs in this line.
}
private static int GetLastDayOfMonth(int month)
{
// set return value to the last day of the month
// for any date passed in to the method
// create a datetime variable set to the passed in date
DateTime dtTo = new DateTime(DateTime.Now.Year, month, 1);
// overshoot the date by a month
dtTo = dtTo.AddMonths(1);
// remove all of the days in the next month
// to get bumped down to the last day of the
// previous month
dtTo = dtTo.AddDays(-(dtTo.Day));
// return the last day of the month
return dtTo.Day;
}
让我们假设如果您在2010年7月21日运行,现在就可以获得。我认为这是一个有效的日期。 我已经测试了生成的日期和它的确定...这个项目在VS 2008中工作时从未遇到过这个问题。
有什么想法吗?
答案 0 :(得分:1)
FormatException
是31/6/2010
作为参数传递给DateTime.Parse()
造成的。 2010年6月31日不是有效日期 - 六月只有30天。
如果您需要任何月份的最后一天,最好使用DateTime.DaysInMonth()
方法。它将月份和年份都作为参数,因此它可以处理闰年。