C# Asp.net Convert.toDateTime(datevalue) 给出错误与不同的区域性信息需要日期模式

本文关键字:区域性 信息 模式 日期 错误 toDateTime Convert net Asp datevalue 出错 | 更新日期: 2023-09-27 18:35:08

在我的 Asp.net 网站中,我应用了两个文本框(txtstartdate,txtenddate),弹出窗口以格式("05/24/2012")给出日期。文化信息("en-US")工作正常,当我更改为("de")即德语时,它给出错误"System.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

我的要求是日期时间变量必须给出格式为 5/1/2012 12:00:00 AM 的日期,无论设置文化信息对日期无关紧要。这样我就可以在具有列数据类型的 MsSql Server 现有表中执行选择查询 日期时间 与数据 (5/1/2012 12:00:00 AM) formart

更改区域性信息(从母版页下拉列表)后,英语到德语给出错误试过这个但不起作用

 DateTime startdate = DateTime.ParseExact(sDate, "M/d/yyyy", null); 
 //tried also "MM/dd/yyyy"

注意:设置任何cultileinfo,但日期时间模式alwayz为5/1/2012 12:00:00 AM,即en-US文化

C# Asp.net Convert.toDateTime(datevalue) 给出错误与不同的区域性信息需要日期模式

调用 ParseExact 时,您可以尝试使用 "MM/dd/yyyy" 作为格式字符串,假设您确定输入将始终采用该格式。

或者,请尝试改用Convert.ToDateTime(yourString, CultureInfo.InvariantCulture)

我认为在这种情况下

,您必须将日历的altFormat设置为SQL服务器使用的格式。 然后,您可以使用隐藏字段来存储每个日期选择器的 altDate。 提交时,正确格式的 altField 值将发送到服务器,而不是向用户显示的区域性特定值。