C# C Asp.net Convert.toDateTime(datevalue)提供了不同文化的错误信息需要日期模式看起来像2012年1月5日12:00:00 AM

C# C Asp.net Convert.toDateTime(datevalue)提供了不同文化的错误信息需要日期模式看起来像2012年1月5日12:00:00 AM,c#,asp.net,.net,datetime,datetime-format,C#,Asp.net,.net,Datetime,Datetime Format,在我的Asp.net网站中,我有两个文本框txtstartdate,txtenddate应用JQquery日期选择器,弹出窗口以2012年5月24日的格式给出日期。对于CultureInfo US,工作正常,当我更改为de ie德语时,它会给出错误系统。FormatException:字符串未被识别为有效的日期时间。。 在我的代码隐藏文件中,我正在编写此代码 string sDate = txtstartdate.Text; // 05/01/2012 (debugging gives t

在我的Asp.net网站中,我有两个文本框txtstartdate,txtenddate应用JQquery日期选择器,弹出窗口以2012年5月24日的格式给出日期。对于CultureInfo US,工作正常,当我更改为de ie德语时,它会给出错误系统。FormatException:字符串未被识别为有效的日期时间。。 在我的代码隐藏文件中,我正在编写此代码

 string sDate = txtstartdate.Text;  //  05/01/2012 (debugging gives this values)
 string eDate = txtenddate.Text;    //   05/24/2012 (debugging gives this values)

 DateTime startdate = Convert.ToDateTime(sDate); //  5/1/2012 12:00:00 AM
 DateTime enddate = Convert.ToDateTime(eDate);   //  5/24/2012 12:00:00 AM
我的要求是datetime变量必须给出格式为5/1/2012 12:00:00 AM的日期,无论是什么,cultureinfo集合都与日期无关。因此,我可以在MsSql服务器现有表中执行select查询,该表的列数据类型为datetime,数据为5/1/2012 12:00:00 AM format

将CultureInfo从母版页dropdownlist English更改为德语后会出现错误 我试过了,但没用

 DateTime startdate = DateTime.ParseExact(sDate, "M/d/yyyy", null); 
 //tried also "MM/dd/yyyy"
注意:设置任何cultileinfo,但datetime模式始终为5/1/2012 12:00:00 AM ie en US culture

您可以尝试在调用ParseExact时使用MM/dd/yyyyy作为格式字符串,前提是您确定输入将始终使用该格式


或者,尝试使用Convert.ToDateTimeyourString,而不是CultureInfo.InvariantCulture。

我认为在这种情况下,您必须将日历的格式设置为SQL server使用的格式。然后,可以使用隐藏字段存储每个日期选择器的altDate。提交时,将以正确格式将的值发送到服务器,而不是显示给用户的特定于区域性的值。

正如您所说,您使用了Convert.ToDateTimeyourString、CultureInfo.InvariantCulture这将输出01.05.2012 00:00:00,创建error@LukeHMM/dd/yyy在反文化中不起作用,因为斜杠代表特定于区域性的日期分隔符,在德国是句号。但是,使用CultureInfo.InvariantCulture,您的第二个建议当然会起作用。@Satinder singh-这是发布01.05.2012 00:00:00-否,输出是日期时间实例,它是日期/时间的二进制表示形式。当然,当您尝试使用德语区域性设置该日期/时间的格式时,默认情况下,您将获得所看到的德语格式,除非您明确指定不同的格式字符串和/或区域性。@joe:bedug时,de as datetime变量的值为01.05.2012 00:00:00。在我的mssql中,存储在2012年5月1日12:00:00 AM FORMAT中的值。因此,我无法对德语FORMAT执行select查询。@Satinder,调试时,二进制日期时间将使用当前区域性显示,在您的示例中为德语。对于MySql,理想情况下应该使用参数化查询;否则,只需使用db所期望的格式和区域性来格式化日期时间=例如DateTime.ToString/d/yyyy hh:mm:ss tt,CultureInfo.InvariantCulturedatetime格式根据选定的当前CultureInfo自动设置。他们可能有很多文化,比如德语、法语、美国,我需要的都是默认的En-Us格式datetimeRight。因此,您可以将altFormat设置为en us格式,但是日历绑定到的文本框将以用户的本地格式显示。thnx用于回复,文本框中显示的格式没有问题。当我尝试使用convert将该文本值转换为datetime时,出现了问题。toDatetimetxtvalue在选择德语时出错。是支持所有文化信息的任何通用格式每个文化都可以有不同的文化信息,因此没有通用格式。不幸的是,从网页上获取正确格式的日期并不是很简单。当您从altField而不是txtValue中获取日期时,您得到了什么值?