在querystring上获取DateTime

时间:2012-04-16 13:41:26

标签: c# datetime query-string

我的查询字符串中有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>

enter image description here enter image description here

提前谢谢你

3 个答案:

答案 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将尝试不同的格式,但可能会失败,如您所见。

使用ParseExactTryParseExact时,您需要传入直接对应于您要解析的字符串的格式字符串。

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)适用于查询字符串中指定的格式。