我有textbox
从用户那里获取输入日期。现在我想制作一个validator
来检查日期是否大于今天。
我试过这个链接,但它有一些问题http://forums.asp.net/t/1116715.aspx/1
如果我给这个日期 25/03/2013
这是正确的,但是如果给 01/04/2013
,它说它比今天要少。
**
更新
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtReturnDate"
Display="Dynamic" ErrorMessage="Date should be greater then today" ForeColor="Red"
Operator="GreaterThan" ValidationGroup="VI">Date should be greater then today</asp:CompareValidator>
**
请帮我解决这个问题
答案 0 :(得分:3)
使用以下代码将指定日期与今天日期进行比较
string date = "01/04/2013";
DateTime myDate = DateTime.ParseExact(date, "dd/MM/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
if (myDate > DateTime.Today)
{
Console.WriteLine("greater than");
}
else
{
Console.WriteLine("Less Than");
}
答案 1 :(得分:2)
好的,我已经通过
完成了这项工作CompareValidator1.ValueToCompare = DateTime.Today.ToString("MM/dd/yyyy");
答案 2 :(得分:1)
问题在于25/3/2013
是明确的25th March 2013
,但如果文化设置错误,01/04/13
可能是4th january 2013
,这确实在今天的日期之前。我假设您认为您正在进入1st April 2013
,这将是之后。
解决方案是
之一2013-01-04
)dd/MM/yyyy
) asp:CompareValidator
的问题在于,它似乎并不理解日期的格式可能不同,只使用ToShortDateString
的{{1}}变体进行比较(无论是谁实现此被枪杀了!)。根据{{3}}的解决方案似乎是使用DateTime
CustomValidator
答案 3 :(得分:0)
它认为2013年1月4日是1月4日。您应该使用新的DateTime(年,月,日)构造函数创建一个DateTime对象,comparisson将正常工作,即
var compareDate = new DateTime(2013,4,1)
bool afterToday = DateTime.Today < compareDate
答案 4 :(得分:0)
这种日期验证应该在客户端进行。在我的应用程序中我们使用了以下代码
convert: function (d) {
/* Converts the date in d to a date-object. The input can be:
a date object: returned without modification
an array : Interpreted as [year,month,day]. NOTE: month is 0-11.
a number : Interpreted as number of milliseconds
since 1 Jan 1970 (a timestamp)
a string : Any format supported by the javascript engine, like
"YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc.
an object : Interpreted as an object with year, month and date
attributes. **NOTE** month is 0-11. */
return (
d.constructor === Date ? d :
d.constructor === Array ? new Date(d[0], d[1], d[2]) :
d.constructor === Number ? new Date(d) :
d.constructor === String ? new Date(d) :
typeof d === "object" ? new Date(d.year, d.month, d.date) :
NaN
);
isFutureDate: function (a) {
var now = new Date();
return (a > now) ? true : false;
},
现在调用上面的函数(isFutureDate(convert(“你的表单日期值”)))。