1

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>

**

この問題を解決するのを手伝ってください

4

5 に答える 5

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");
                }
于 2013-03-18T11:40:13.973 に答える
2

わかりました私はこれをしました

CompareValidator1.ValueToCompare = DateTime.Today.ToString("MM/dd/yyyy");
于 2013-03-18T10:51:35.300 に答える
1

問題は25/3/2013明確ですが25th March 2013、文化の設定が間違っていると、実際に今日の日付より前に01/04/13なる可能性があります。4th january 2013私はあなたがあなたが入っ1st April 2013ていると思っていたと思います。

解決策は

  • テキストボックスに入力するときは、明確な日付形式を使用してください(2013-01-044月1日)
  • 実際の日付を公開する日付セレクターコンポーネントを使用する
  • 予想どおりに日付を解析します(dd/MM/yyyy

の問題asp:CompareValidatorは、日付が異なる形式である可能性があることを理解していないようであり、比較するためToShortDateStringにaのバリアントのみを使用することですDateTime(これを実装した人は誰でも撃たなければなりません!)。この質問による解決策は、CustomValidator

protected void DateTimeComparision_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = DateTime.ParseExact(txtDate.Text,"dd/MM/yyyy") > DateTime.Today 
}
于 2013-03-18T10:29:24.080 に答える
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( "your form date value")))。

于 2013-03-18T10:32:58.743 に答える
0

2013年1月4日は1月4日だと思います。新しいDateTime(Year、Month、Day)コンストラクターを使用してDateTimeオブジェクトを作成する必要があります。これにより、比較が正しく機能します。

var compareDate = new DateTime(2013,4,1)
bool afterToday = DateTime.Today < compareDate
于 2013-03-18T10:28:34.400 に答える