C# 比较日期大于C中的日期#

C# 比较日期大于C中的日期#,c#,date,comparison,date-comparison,C#,Date,Comparison,Date Comparison,我试图检查传递的变量date是否大于我在代码中包含的静态日期,并且目前正在尝试使用以下代码 private String LastPayDate { get { string foo; if(Parameters.TryGetValue("Last Pay Date", out foo)) return foo; else return null; } } private Boolean IsLastPay() { if (

我试图检查传递的变量date是否大于我在代码中包含的静态日期,并且目前正在尝试使用以下代码

private String LastPayDate {
  get { 
    string foo;

    if(Parameters.TryGetValue("Last Pay Date", out foo))
      return foo;
    else 
      return null; 
  } 
}

private Boolean IsLastPay() {
  if (!string.IsNullOrEmpty(LastPayDate)) {
    if(DateTime.Parse(Parameters.TryGetValue("Last Pay Date") >="24/05/2018")
       return true;
    else
      return false;
  } 

  return false;
}   
但是,我得到的唯一错误是在下面的代码部分中

if(DateTime.Parse(Parameters.TryGetValue(“上次付款日期”)>“2018年5月24日”)


有人能帮忙吗?

如果要比较
DateTime
s,请比较它们,但不要比较
string
s:

//TODO: what is the magic number (date) 24 May 2018?
private Boolean IsLastPay() {
  if (Parameters.TryGetValue("Last Pay Date", out var dateSt))
    if (DateTime.TryParse(dateSt, out var paramDate))
      return paramDate >= new DateTime(2018, 5, 24);
    else
      return false; // DateTime.TryParse failed to parse the parameter
  else
    return false;   // Parameters.TryGetValue failed to get the value
}

感谢您的回复。它确实有帮助,我已经设法使用下面的代码和它的工作现在,非常感谢帮助

private Boolean IsLastPay()
{
   if (!string.IsNullOrEmpty(LastPayDate))
{
   string lpd;
}
   if(Parameters.TryGetValue("Last Pay Date", out lpd))
{
   if(DateTime.Parse(lpd) > new DateTime(2018,05,24))
       return true;
   else
       return false;
}
}
return false;
}

为什么不使用DateTime类的
DateTime.Compare()
方法呢。 为此,您需要同时拥有
DateTime
类型的变量/对象

string staticDate = "24/05/2018"; //dd-MM-yyyy
string inputDate = "14/08/20"; //dd-MM-yy
string greaterDate = CalculateGreaterDate(inputDate, staticDate); // 14/08/20 is greater  

public static string CalculateGreaterDate(string iDate, string sDate)
{
   // input date
   string input = iDate;
   var inputElements = input.Split('/');
   int inputDay = Convert.ToInt32(inputElements[0]); //14 
   int inputMonth = Convert.ToInt32(inputElements[1]); //08
   int inputYear = Convert.ToInt32(inputElements[2]); //20

   // static date
   string static = sDate;
   var staticElements = static.Split('/');
   int staticDay = Convert.ToInt32(staticElements[0]); //24
   int staticMonth = Convert.ToInt32(staticElements[1]); //05
   int staticYear = Convert.ToInt32(staticElements[2]); //2018

   DateTime inputDate = new DateTime(inputYear, inputMonth, inputDay);
   DateTime staticDate = new DateTime(staticYear, staticMonth, staticDay);

   // DateTime.Compare(d1, d2) returns:
   // > 0 : d1 is greater than d2
   // = 0 : d1 & d2 are equal
   // < 0 : d1 is smaller than d2
   int result = DateTime.Compare(inputDate, staticDate);
   if (result > 0)
      return iDate + " is greater";
   else if (result < 0)
      return sDate + " is greater";
   else if (result == 0)
      return iDate + " is equal to " + sDate;
}
string staticDate=“24/05/2018”//dd-MM-yyyy
字符串inputDate=“14/08/20”//dd-MM-yy
字符串greaterDate=CalculaterDate(inputDate,staticDate);//14/08/20更大
公共静态字符串CalculaterGate(字符串iDate,字符串sDate)
{
//输入日期
字符串输入=iDate;
var-inputElements=input.Split('/');
int inputDay=Convert.ToInt32(inputElements[0]);//14
int inputMonth=Convert.ToInt32(inputElements[1]);//08
int inputYear=Convert.ToInt32(inputElements[2]);//20
//静态日期
字符串static=sDate;
var staticElements=static.Split('/');
int staticDay=Convert.ToInt32(staticElements[0]);//24
int staticMonth=Convert.ToInt32(staticElements[1]);//05
int staticYear=Convert.ToInt32(staticElements[2]);//2018
DateTime inputDate=新的日期时间(inputYear、inputMonth、inputDay);
DateTime staticDate=新的日期时间(staticYear、staticMonth、staticDay);
//DateTime.Compare(d1,d2)返回:
//>0:d1大于d2
//=0:d1和d2相等
//<0:d1小于d2
int result=DateTime.Compare(inputDate,staticDate);
如果(结果>0)
返回iDate+“更大”;
否则如果(结果<0)
返回sDate+“大于”;
否则如果(结果==0)
返回iDate+”等于“+sDate”;
}

首先,您应该说明您得到的确切错误。其次,我很确定这里的错误消息告诉您确切的问题-您不能期望将
日期时间
字符串
进行比较以产生有用的结果。首先将“2018年5月24日”转换为日期时间,然后进行比较。您缺少
if(DateTime.Parse(Parameters.TryGetValue(“Last Pay Date”))>=“24/05/2018”)
编译器将标记多个错误,但我也无法理解逻辑。如果最后一个付款日期是2020年1月1日,那么应该
IsLastPay()
真的返回
true
?在一行中塞进太多东西是初学者常见的错误。难读、难调试、难正确。As未使用正确的数据类型。