如何检查日期是否小于或等于今天的日期

本文关键字:日期 于今天 今天 是否 何检查 检查 小于 | 更新日期: 2025-01-25 13:35:43

我需要确定用户输入的日期是否小于或等于今天的日期。

我有以下代码,它将日期转换为int并比较它们的值。有没有更有效或更精益的方法可以用更少的代码行完成此操作?

我如何用更少的代码或无关紧要的东西来做到这一点?

法典:

class Program
{
    public static bool IsDateBeforeOrToday(string input)
    {
        bool result = true;
        if(input != null)
        {
            DateTime dTCurrent = DateTime.Now;
            int currentDateValues = Convert.ToInt32(dTCurrent.ToString("MMddyyyy"));
            int inputDateValues = Convert.ToInt32(input.Replace("/", ""));
            result = inputDateValues <= currentDateValues;
        }
        else
        {
            result = true;
        }
        return result;
    }
    static void Main(string[] args)
    {
        Console.WriteLine(IsDateBeforeOrToday("03/26/2015"));
        Console.ReadKey();
    }
}

如何检查日期是否小于或等于今天的日期

不要将当前日期转换为字符串,然后int并进行比较,而是将参数日期字符串转换为DateTime对象,然后像这样进行比较:

var parameterDate = DateTime.ParseExact("03/26/2015", "MM/dd/yyyy", CultureInfo.InvariantCulture);
var todaysDate = DateTime.Today;
if(parameterDate < todaysDate)
{
}

您可以采用以下方法:

public static bool IsDateBeforeOrToday(string input)
{
    DateTime pDate;
    if(!DateTime.TryParseExact(input, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out pDate))
    {
        //Invalid date
        //log , show error
        return false;
    }
    return DateTime.Today <= pDate;
}
  • DateTime.TryParseExact如果要避免在解析。
  • DateTime.Today如果您只想比较日期并忽略时间部分。
您可以使用

DateTime.Compare方法。你可以这样做:

DateTime dTCurrent = DateTime.Now;
DateTime inputDate = DateTime.ParseExact(input, "MM/dd/yyyy", CultureInfo.InvariantCulture);
int result = DateTime.Compare(dTCurrent, inputDate);

int 'result' 将指示 dTCurrent 是否小于 inputDate(小于 0(、等于 (0( 或大于 (大于 0(。

你可以使用返回boolTryParseExact TryParse,无论解析是否成功。

在我的第一个实现中,我抛出了异常,但它是无用的,因为如果失败ParseParseExact会自动抛出它。所以有两种选择:

  • 只需使用Parse并捕获Main()中的异常;

  • 使用TryParse并在输入错误时执行一些有用的IsDateBeforeOrToday()操作。

实现:

class Program
{
    public static bool IsDateBeforeOrToday(string input)
    {
        DateTime inputTime;
        var parseResult = DateTime.TryParse(input, inputTime);
        if (!parseResult)
            //Do something useful if parse failed.
        return inputTime <= DateTime.Now
    }
    static void Main(string[] args)
    {
        Console.WriteLine(IsDateBeforeOrToday("03/26/2015"));
        Console.ReadKey();
    }
}
您可以使用

DateTime.Compare() 如果结果小于该值表示第一个日期小于第二个日期,0 表示等于和更大

DateTime dileverydate = Convert.ToDateTime(dileveryDate.Text);
var todaysDate = DateTime.Today;
int result = DateTime.Compare(dileverydate, todaysDate);