//来根据用户输入的数据是6,还是8位来转换成合法的日期格式
public Object getStartDate(string dt)
{
// 使用DateTime.TryParse()
//输入的如果是数字的情况下的处理方法
if (IsNumeric(dt))
{
//如果是6位数的处理方法
if (dt.Length == 6)
{
//如果是6位并且合法的处理方法
if (0 < Convert.ToInt32(dt.Substring(4, 2)) && Convert.ToInt32(dt.Substring(4, 2)) <=12)
{
try
{
DateTime ddtt = System.DateTime.Parse(dt.Substring(0, 4) + "-" + dt.Substring(4, 2) +
"-" + "01" + " 00:00:00");
return ddtt;
}
catch
{
return null;
}
}
//如果是6位但不合法时的处理方法
else
{
return null;
}
}
//如果输入的是8位数,并且是合法的日期的情况下
else if (dt.Length == 8)
{
//如果输入的月份是1-12月
if (0 < Convert.ToInt32(dt.Substring(4, 2)) && Convert.ToInt32(dt.Substring(4, 2)) <= 12)
{
DateTime temp = System.DateTime.Parse(dt.Substring(0, 4) + "-" + dt.Substring(4, 2) +
"-" + "11"+ " 00:00:00");
//判断输入的日期是否在当前月的天数之内,这个是天数合理的处理情况
if (0 < Convert.ToInt32(dt.Substring(6, 2)) && Convert.ToInt32(dt.Substring(6, 2)) <=
System.DateTime.DaysInMonth(temp.Year, temp.Month))
{
try
{
DateTime ddtt = System.DateTime.Parse(dt.Substring(0, 4) + "-" + dt.Substring(4, 2) +
"-" + dt.Substring(6, 2) + " 00:00:00");
return ddtt;
}
catch
{
return null;
}
}
//这个是月份合理但天数不合理的处理情况
else
{
return null;
}
}
//如果输入的不是1-12月份的日期的情况的处理方法
else
{
return null;
}
}
//如果输入的不是6位或8位的情况都返回空
else
{
return null;
}
}
//输入的如果不是数字的处理方法
else
{
return null;
}
}
//根据用户的输入来判断并转换成合法的日期格式
public object getEndDate(string start,string end)
{
//如果用户输入的起始时间为空或者不合法,这种情况是不能出现的
if (this.getStartDate(start)==null)
{
return null;
}
//用户输入了合法的起始日期时间之后
else
{
//此时终止时间可能出现两种形式
//1.终止时间为空2.终止时间为YYYYMMDD的这个格式
//终止时间为空的情况
DateTime dt =Convert.ToDateTime(this.getStartDate(start));
if (end == null || end.ToString() == "")
{
DateTime endTime =DateTime.Parse(start.Substring(0, 4) + "-" + start.Substring(4, 2) +
"-" + System.DateTime.DaysInMonth(dt.Year, dt.Month).ToString() + " 23:59:59");
return endTime;
}
//如果输入的终止时间是8位的
else if (end.Length == 8)
{
//此处需要进行一个判断日期前后顺序
if (this.getStartDate(end) == null)
{
return null;
}
else
{
DateTime endTime =Convert.ToDateTime(this.getStartDate(end));
//如果输入的起始时间比终止时间晚
if (dt > endTime)
{
return null;
}
//如果输入的起始时间比终止时间早
else
{
return endTime;
}
}
}
//用户输入了合法的起始时间后,但是终止时间既不是空值又不是8位值得情况
else
{
return null;
}
}
}
本文介绍了一种将六位或八位数字字符串转换为合法日期格式的方法,并提供了如何验证这些日期的有效性和顺序的详细步骤。
485

被折叠的 条评论
为什么被折叠?



