如何检查日期是否小于或等于今天的日期
本文关键字:日期 于今天 今天 是否 何检查 检查 小于 | 更新日期: 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(。
你可以使用返回bool的TryParseExact TryParse,无论解析是否成功。
在我的第一个实现中,我抛出了异常,但它是无用的,因为如果失败Parse或ParseExact会自动抛出它。所以有两种选择:
-
只需使用
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);