无法应用运算符

时间:2013-05-02 04:17:08

标签: c# .net

我是编程新手。我在编写这行代码时遇到错误:

var time = DateTime.Now.ToShortTimeString().ToString();
var timePattern = "09:30";
            if (time.ToString() <= timePattern.ToString())
{
//disable the button
}

错误显示:运算符'&lt; ='不能应用于'string'和'string'类型的操作数

有人能帮助我吗?

5 个答案:

答案 0 :(得分:2)

您无法应用小于等于(<=)的运算符来键入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
}

答案 1 :(得分:1)

您可以在不指定年/月/日的情况下执行此操作...

        if (DateTime.Now.TimeOfDay < new TimeSpan(9, 30, 0))
        {
            // ... it's before 9:30 am ...
        }

答案 2 :(得分:0)

没有为字符串的值定义&lt; =运算符。 您应该根据DateTime实例进行比较

看看这个:http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx

答案 3 :(得分:0)

不要将DateTimes转换成字符串来比较它们,直接使用DateTimes。

要将字符串转换为DateTime,请使用DateTime.Parse或DateTime.ParseExact

注意

比较字符串:

像这样使用String.Comparecompare字符串。

<=尚未针对字符串实施。

答案 4 :(得分:0)

您应该直接比较DateTime,而不是将它们转换为字符串。 DateTime的{​​{3}}所以它应该像以下一样简单:

var time = DateTime.Now;
var timePattern = new DateTime(time.Year, time.Month, time.Day, 9, 30, 0);
if (time <= timePattern)
{
    //disable the button
}

仅供参考,您无法将<=用于字符串,而是需要使用<= operator has been implemented

if (time.ToString().CompareTo(timeParrent.ToString()) <= 0)

static方法string.CompareTo替代语法。

if (string.Compare(time.ToString(), timeParrent.ToString()) <= 0)

同样DateTime.ToShortTimeString()不会以可排序(在所有情况下)格式提供格式。您可以使用string.Compare使用可排序的日期/时间模式格式将日期作为字符串。您希望这样做的一个示例用例是将日期打印到HTML中并使用JavaScript对其进行排序。