我的查询字符串中有2个变量:
&Start=Mon Apr 02 2012 00:00:00 GMT+0200&End=Thu Apr 26 2012 00:00:00 GMT+0200
当我试图得到它时
像这样:DateTime EndDate = Convert.ToDateTime(Request.QueryString["End"]);
或者这个:
DateTime date = DateTime.ParseExact(Request.QueryString["Start"], "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat);
我收到了消息: 该字符串未被识别为有效的DateTime。
任何人都可以帮助我吗?
PS:我使用devexpress Component
<dx:ASPxDateEdit ID="ASPxDateEdit_Synthe_Fin" runat="server" Width="100px" ClientInstanceName="ASPxDateEdit_Synthe_Fin">
</dx:ASPxDateEdit>
<dx:ASPxButton ID="ASPxButton_Synthese" runat="server" Text="Synthese" AutoPostBack="False">
<ClientSideEvents Click="function (s, e) { e.processOnServer = false; window.open('Report/Syntehse.aspx?CientID='+ASPxComboBox_Client.GetValue()+'&Start='+ASPxDateEdit_Synth_Deb.GetValue()+'&End='+ASPxDateEdit_Synthe_Fin.GetValue());}" />
</dx:ASPxButton>
提前谢谢你
答案 0 :(得分:1)
为什么要写"dd/MM/yyyy"
?它不是QS中的格式...
应该是这样的:
ddd MMM dd yyyy HH:mm:ss
---&gt; 2012年4月2日星期一00:00:00 GMT + 0200
答案 1 :(得分:1)
Convert
将尝试不同的格式,但可能会失败,如您所见。
使用ParseExact
或TryParseExact
时,您需要传入直接对应于您要解析的字符串的格式字符串。
dd/MM/yyyy
使用Mon Apr 02 2012 00:00:00 GMT+0200
。这些并不相互对应。
请尝试ddd MMM dd yyyy HH:mm:ss G\MTK
:
DateTime.ParseExact("Mon Apr 02 2012 00:00:00 GMT+0200",
"ddd MMM dd yyyy HH:mm:ss G\\MTK",
CultureInfo.InvariantCulture)
更新
另一个问题是URL参数不是URL编码的,所以:
&Start=Mon Apr 02 2012 00:00:00 GMT+0200&End=Thu Apr 26 2012 00:00:00 GMT+0200
最终将+
个字符视为服务器端的空格(因为+
也会对URL上的空格进行编码)。
您需要对日期/时间值进行URL编码,然后再将其放在网址上。
答案 2 :(得分:0)
DateTime.ParseExact(date,“ddd MMM dd yyyy HH:mm:ss \”GMT \“zzz”,System.Globalization.CultureInfo.InvariantCulture)适用于查询字符串中指定的格式。