0

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

我收到消息:该字符串未被识别为有效的日期时间。

任何人都可以帮助我吗?

PS:我使用 devexpress 组件

 <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>

在此处输入图像描述 在此处输入图像描述

提前谢谢你

4

3 回答 3

1

你为什么写作"dd/MM/yyyy"?它不是 QS 中的格式...

它应该是这样的:

ddd MMM  dd yyyy HH:mm:ss

--->2012 年 4 月 2 日星期一 00:00:00 GMT+0200

于 2012-04-16T13:45:22.670 回答
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 编码,然后再将它们放在 URL 上。

于 2012-04-16T13:46:41.993 回答
0

DateTime.ParseExact(date, "ddd MMM dd yyyy HH:mm:ss \"GMT\"zzz", System.Globalization.CultureInfo.InvariantCulture) 适用于查询字符串中指定的格式。

于 2012-04-16T14:02:55.343 回答