我想仅在日期时间之前或今天的日期显示消息。这就是我所拥有的:
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中)。
感谢任何帮助。
答案 0 :(得分:7)
正如错误所述,maturityData
是string
而不是DateTime
您需要转换它:
var todaysdate = DateTime.Today;
if (DateTime.Parse(acct.maturityDate) <= todaysdate ) {
maturityText.Visible = true;
}
我正在那里进行直接解析,您可能需要根据自己的需要考虑TryParse
或ParseExact
。
答案 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.Parse
,DateTime.TryParse
或DateTime.TryParseExact
方法。
Parse
将抛出异常。
TryParse
和TryParseExact
不会抛出异常,但会允许您根据日期是否能够进行解析来做出决定。
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;
}
}