小智 14
string date = "20140231";
DateTime result;
int year = Convert.ToInt32(date.Substring(0, 4));
int month = Convert.ToInt32(date.Substring(4, 2));
int day = Convert.ToInt32(date.Substring(6, 2));
result = new DateTime(year, month, Math.Min(DateTime.DaysInMonth(year, month), day));
Run Code Online (Sandbox Code Playgroud)
它不能在任何一年30或31几天.这就是为什么你不能20140231成功解析你的字符串.
你可以清楚地看到二月的最后一天;
DateTime lastDayOfFebruary = (new DateTime(2014, 2, 1)).AddMonths(1).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)
如果你的服务总是将年份作为前4个字符,你可以.Substring()用来获得年份并将DateTime构造函数作为一年传递.
var date = "20140231";
string year = date.Substring(0, 4);
DateTime lastDayOfFebruary = (new DateTime(int.Parse(year), 2, 1)).AddMonths(1).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)