C# URL中的日期时间错误

C# URL中的日期时间错误,c#,asp.net,C#,Asp.net,我正在开发一个应用程序,我在inquiry.aspx页面上传递一个URL,该URL将向用户的电子邮件地址发送消息 该URL看起来像: mail.Body += string.Format("<a href=\"http://www.abc.co.in/Download.aspx?period=" + DateTime.Now.ToString("dd-MM-yyyy hh mm") + "&ProductN

我正在开发一个应用程序,我在
inquiry.aspx
页面上传递一个URL,该URL将向用户的电子邮件地址发送消息

该URL看起来像:

mail.Body += string.Format("<a href=\"http://www.abc.co.in/Download.aspx?period="
                   + DateTime.Now.ToString("dd-MM-yyyy hh mm")
                   + "&ProductName=" + productName + "\">Demo Download</a>");
http://www.abc.co.in/Download.aspx?period=11-04-2013%2006%2036&ProductName=Otja
我得到了一个错误:

字符串未被识别为有效的日期时间

用户从其电子邮件id单击该链接后,我的输出URL如下所示:

mail.Body += string.Format("<a href=\"http://www.abc.co.in/Download.aspx?period="
                   + DateTime.Now.ToString("dd-MM-yyyy hh mm")
                   + "&ProductName=" + productName + "\">Demo Download</a>");
http://www.abc.co.in/Download.aspx?period=11-04-2013%2006%2036&ProductName=Otja

这里datetime用于条件,即当天之后意味着邮件今天发送给用户,今天只有用户可以下载。明天起,它将显示一条消息,说明您现在无法下载软件。这就是在URL上传递datetime的原因,但我得到了一个错误。请有人帮帮我,这是急需的

有几件事你可以试试

首先,将日期格式更改为通用日期格式,而不是区域日期格式。假设您使用的是.NETWeb应用程序,我看到了服务器的客户端执行不同的问题

yyyy-MM-dd 
其次,您的日期时间格式字符串不太正确,即在小时和分钟之间缺少冒号。此外,如果您尝试上述格式,则必须指定TT或24小时。在文章的结尾,你的格式如下

yyyy-MM-dd hh:mm tt

此外,您可能需要使用日期比较

DateTime dt1 = Convert.ToDateTime(myDate).Date;
DateTime dt2 = DateTime.Now.Date;
if(dt1 != dt2)
{
//...
}
else
{
//...
}

由于创建URL时使用的是
DateTime.ToString(“dd-MM-yyy-hh-MM”)
,因此解析URL时应使用相同的格式字符串:

DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh mm", System.Globalization.CultureInfo.InvariantCulture);
最佳实践要求您在创建URL时也传递区域性:
DateTime.ToString(“dd-MM-yyy-hh-MM”,CultureInfo.InvariantCulture)


顺便说一下,您不应该在代码示例的URL中传递日期。相反,您应该将日期与令牌一起存储在数据库中,并传递该令牌。或者,您可以加密日期。问题是收件人可以更改日期,从而覆盖您对下载可用性的检查。

您需要分析该字符串。中的答案如何?没有帮助?不是答案,但。。。用户是否可以手动更改url,以便下载?@C.Evenhuis先生,我的下一步是url编码,但首先我需要解决方案在您的代码和给潜在用户的消息中,请不要将“you”拼写为“U”。认真地说。@Knagis sir okk我已经生成了一个随机数和用户的entrydate都存储在数据库中,根据您的评论,我想生成令牌并将其发送到用户的邮件中,因此,先生,我如何生成此令牌请给出一些想法,随机数将是您的令牌。