【问题标题】:csharp comparing a user entered expiration date to todays date to check for validitycsharp 将用户输入的到期日期与今天的日期进行比较以检查有效性
【发布时间】:2017-05-02 17:06:46
【问题描述】:

c 锐利

我正在尝试检查用户对过期日期字段的输入并验证日期是否在今天之后。

输入格式为 yyyy-MM-DD

我在将字符串转换为有效的日期时间格式时遇到问题

我发现使用的例子

System.Globalization.CultureInfo.InvariantCulture.DateTimeStyles.None 不会编译

这是我的代码

    // initate with button

     private void ChkDateBtn_Click(object sender, EventArgs e)
            {
                stInputDate = DateTxtBx.Text;  // input from text box
                // bExpDateLater already defined as bool
                bExpDateLater = ValidateExpDate(stInputDate);

                if (bExpDateLater == true)
                {
                    OutputTxtBox.Text = "This is a valid Date";
                }
                else
                {
                    OutputTxtBox.Text = "This is not a valid Date";
                }

            }

    // validate date as later than today

    private bool ValidateExpDate(string expdate)
            {
                // expdate string format yyyy-MM-dd
                DateTime sDateNow = DateTime.Now;

                // remove hyphen from date
                expdate = expdate.Replace("-", "");
                string format = "yyyyMMdd";
                DateTime sCompareDate;
                DateTime.TryParseExact(expdate, format,System.Globalization.CultureInfo.InvariantCulture.DateTimeStyles.None, out sCompareDate);

                if (sDateNow < sCompareDate)
                {
                    return true;

                }
                else
               {

                    return false;
                }
            }

任何建议将不胜感激

【问题讨论】:

  • 输入格式为 yyyy-MM-DD 而不是 yyy-MM-DD
  • 你少了一个逗号 - 它应该是 System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None
  • 你在代码中使用的格式是yyyyMMdd,而不是yyyy-MM-dd
  • TryParseExact() 返回一个关于它是否成功的布尔值。您可能应该使用它来确保您不会抛出以下几行。

标签: c# date


【解决方案1】:

问题在于我尝试解析日期的方式

这就是解决方案

    private bool ValidateExpDate(string expdate)
    {
        // expdate string format yyyy-MM-dd
        DateTime dtDateNow = DateTime.Now;
        // DateTime shortDateNow = dtDateNow.ToShortTimeString;

        // remove hyphen from date
        expdate = expdate.Replace("-", "");
        string format = "yyyyMMdd";

        DateTime dtCompareDate = DateTime.ParseExact(expdate, format, System.Globalization.CultureInfo.CurrentCulture);

        if (dtDateNow < dtCompareDate)
        {
            return true;

        }
        else
        {

            return false;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多