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

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

我有以下代码将日期转换为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; } 
  • 如果要在解析中避免exception,请使用DateTime.TryParseExact
  • 如果您只想比较日期并忽略时间部分,请使用DateTime.Today

您可以使用TryParseTryParseExact ,它返回bool ,无论解析是否成功。

在我的第一个实现中,我抛出exception,但它没用,因为如果失败, ParseParseExact将自动抛出它。 所以有两种选择:

  • 只需在Main()使用Parse并捕获exception;

  • 如果输入错误,请使用TryParse并在IsDateBeforeOrToday()执行一些有用的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方法。 你可以这样做:

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

int’结果’表示dTCurrent是否小于inputDate(小于0),相同于(0)或大于(大于0)。