我从javascript获取日期字符串并将其转换为Datetime并将其保存到数据库。
但在印度服务器上,我的代码工作正常。但是,当我将代码上传到基于美国的服务器时,它会给出异常。是否有任何常用的方法可以使我的代码可以运行到所有服务器。
我的代码如下所示
[WebMethod(EnableSession = true)]
public static bool submitDate( string date ) // format is dd-mm-yyyy 20-01-2011
{
DateTime DOBdate = DateTime.Now;
double age = 0.0;
if (DateTime.TryParse(date , out DOBdate))
{
age = (DateTime.Now - DOBdate).Days / 365;
}
dbcmd.Parameters.Add("@DateOfBirth", SqlDbType.DateTime).Value = Convert.ToDateTime(DOBdate);
}
请帮帮我。
显示的异常是 SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。
答案 0 :(得分:2)
你应该使用TryParseExact,我猜服务器的默认日期时间格式不是dd-mm-yyyy。你应该处理解析函数的if:
public static bool submitDate( string date ) // format is dd-mm-yyyy 20-01-2011
{
DateTime DOBdate = DateTime.Now;
double age = 0.0;
if (DateTime.TryParseExact(date , {"dd-MM-yyyy"},
null,
DateTimeStyles.None,
out DOBdate))
{
age = (DateTime.Now - DOBdate).Days / 365;
}
else
{
// Handle this case!
}
dbcmd.Parameters.Add("@DateOfBirth", SqlDbType.DateTime).Value = Convert.ToDateTime(DOBdate);
}
顺便说一句,你的年龄功能并不是一个很好的年龄表示。你的人越老,就会越错。