字符串未被识别为有效日期时间C#

时间:2016-09-30 12:11:58

标签: c# sql-server

我创建了一个在localhost上工作正常的网络应用程序但是当我上传网络应用时,我的日历上出现错误

  

字符串未被识别为有效的DateTime。

Line 1291: string strstartdate = "";  
Line 1292: strstartdate = txtfrmdate.Text;  
Line 1293: DateTime dt = Convert.ToDateTime(strstartdate);  
Line 1294: string strfstartdate = dt.ToString(strstartdate);  
Line 1295: DateTime dtnew = Convert.ToDateTime(strfstartdate);  

日期范围(1/12)正常工作,但是当我选择(13/31)之间的日期时,我收到此错误。

这是选择的内容(13-09-2016

我的C#页

string strstartdate = "";
strstartdate = txtfrmdate.Text;
DateTime dt = Convert.ToDateTime(strstartdate);
string strfstartdate = dt.ToString(strstartdate);
DateTime dtnew = Convert.ToDateTime(strfstartdate);

SqlCommand cmd = new SqlCommand("csuvdaterange");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;

con.Open();

SqlParameter[] param =
{
    new SqlParameter("@logintype",com.ToString()),
    new SqlParameter("@name",lblempname.Text),
    new SqlParameter("@datefrm",DateTime.ParseExact(txtfrmdate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")),
    new SqlParameter("@dateto",DateTime.ParseExact(txttodate.Text,"dd-MM-yyyy",CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"))
};

3 个答案:

答案 0 :(得分:3)

网络服务器上的CurrentCulture似乎是美国的,而且您的文字不是以一个月前的月份格式 - 它推断的是13个月,这不是&# 39;有效日期。

您应该以与代码中稍后相同的方式解析日期:

DateTime.ParseExact(txtfrmdate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture)

答案 1 :(得分:0)

使用DateTime.ParseExact代替Convert.ToDateTime

答案 2 :(得分:0)

为了避免系统在不同的区域日期格式设置上混淆,我建议在转换类型时始终提及日期格式...