不能申请运营商。我该如何解决这个问题?

时间:2014-01-15 14:59:36

标签: c# .net

我想仅在日期时间之前或今天的日期显示消息。这就是我所拥有的:

var todaysdate = DateTime.Today;

if (acct.maturityDate <= todaysdate )           
{
   maturityText.Visible = true;  
}

我收到一条消息,说(acct.maturityDate <= todaysdate )

  

无法将运算符'&lt; ='应用于'string'和'system.datetime'类型的操作数,候选是bool&lt; =(system.datetime,system.datetime)(在struct datetime中)。

感谢任何帮助。

5 个答案:

答案 0 :(得分:7)

正如错误所述,maturityDatastring而不是DateTime您需要转换它:

var todaysdate = DateTime.Today;

if (DateTime.Parse(acct.maturityDate) <= todaysdate ) {
   maturityText.Visible = true;  
}

我正在那里进行直接解析,您可能需要根据自己的需要考虑TryParseParseExact

答案 1 :(得分:2)

这意味着属性acct.maturityDate属于string类型,而不是预期类型System.DateTime。将属性转换/解析为DateTime,您的问题应该解决,或者确保该属性已经是DateTime。

答案 2 :(得分:0)

正如我的评论中所述,maturityDate的类型是string。使用DateTime.Parse()可以解决您的问题,DateTime.TryParseExact()

也是如此

转换为正确的类型将允许您使用正确的运算符。

答案 3 :(得分:0)

首先,您必须将maturityDate更改为DateTime类型,然后您应该使用DateTime.Compare方法,您可以参考此link

答案 4 :(得分:0)

如果maturityDate必须保持原样,您可以使用DateTime.ParseDateTime.TryParseDateTime.TryParseExact方法。

如果无法解析成熟日期,

Parse将抛出异常。

TryParseTryParseExact不会抛出异常,但会允许您根据日期是否能够进行解析来做出决定。

TryParseExact允许您解析日期,即使它与标准DateTime格式不匹配。您只需在方法参数中指定格式字符串以及文化和样式信息。

解析示例:

var todaysdate = DateTime.Today;

if (DateTime.Parse(acct.maturityDate) <= todaysdate ) {
   maturityText.Visible = true;  
}

TryParse示例:

var todaysdate = DateTime.Today;
DateTime dt;

if (DateTime.TryParse(acct.maturityDate, out dt) 
{
    if (dt <= todaysdate)
    {
       maturityText.Visible = true;  
    }
}

TryParseExact示例:

var todaysdate = DateTime.Today;
DateTime dt;

// use whatever format string matches appropriately
if (DateTime.TryParseExact(acct.maturityDate, "YYYY-MM-dd HH:mm:ss"
                  , CultureInfo.InvariantCulture
                  , DateTimeStyles.None, out dt)
{
    if (dt <= todaysdate)
    {
       maturityText.Visible = true;  
    }
}