在asp.net中将今天与今天进行比较

时间:2013-03-18 10:25:40

标签: c# asp.net validation datetime

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

**

请帮我解决这个问题

5 个答案:

答案 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,这将是之后。

解决方案是

之一
  • 在文本框中输入时使用明确的日期格式(4月1日为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(“你的表单日期值”)))。