在美国服务器中提供例外的日期

时间:2014-01-20 13:59:06

标签: asp.net sql-server datetime

我从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之间。

1 个答案:

答案 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); 
 }

顺便说一句,你的年龄功能并不是一个很好的年龄表示。你的人越老,就会越错。