我是编程新手。编写这行代码时出现错误:
var time = DateTime.Now.ToShortTimeString().ToString();
var timePattern = "09:30";
if (time.ToString() <= timePattern.ToString())
{
//disable the button
}
错误显示:运算符'<='不能应用于'string'和'string'类型的操作数
有谁能够帮我?
您不能将小于等于 ( <=
) 运算符应用于 type string
。
您似乎正在尝试检查当前时间是否小于 9:30。为此,请比较DateTime
实例。
DateTime currentTime = DateTime.Now;
//Creates a DateTime instance with the current year, month, day at 9:30AM
DateTime nineThirty =
new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, 9, 30, 0);
if(currentTime.TimeOfDay <= nineThirty.TimeOfDay)
{
//your code
}
您可以在不指定年/月/日的情况下执行此操作...
if (DateTime.Now.TimeOfDay < new TimeSpan(9, 30, 0))
{
// ... it's before 9:30 am ...
}
<= 运算符没有为字符串的值定义。相反,您应该根据 DateTime 实例进行比较
看看这个:http: //msdn.microsoft.com/en-us/library/system.datetime.compare.aspx
不要把 DateTimes 变成字符串来比较,直接使用 DateTimes。
要将字符串转换为 DateTime,请使用 DateTime.Parse 或DateTime.ParseExact
笔记
比较字符串:
用于比较String.Compare
这样的字符串。
<=
尚未针对字符串实现。
您应该直接比较DateTime
s,而不是将它们转换为字符串。该<=
运算符已实现,DateTime
因此它应该很简单:
var time = DateTime.Now;
var timePattern = new DateTime(time.Year, time.Month, time.Day, 9, 30, 0);
if (time <= timePattern)
{
//disable the button
}
仅供参考,您不能将<=
其用于字符串,而是需要使用string.CompareTo
。
if (time.ToString().CompareTo(timeParrent.ToString()) <= 0)
或者替代语法的static
方法。string.Compare
if (string.Compare(time.ToString(), timeParrent.ToString()) <= 0)
也DateTime.ToShortTimeString()
不会以可排序(在所有情况下)格式给出格式。您可以使用time.ToString("u")以使用可排序日期/时间模式格式的字符串形式获取日期。您想要执行此操作的示例用例是将日期打印到 HTML 中并让 JavaScript 对其进行排序。