0

我是编程新手。编写这行代码时出现错误:

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

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

有谁能够帮我?

4

5 回答 5

2

您不能将小于等于 ( <=) 运算符应用于 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
}
于 2013-05-02T04:24:59.703 回答
1

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

        if (DateTime.Now.TimeOfDay < new TimeSpan(9, 30, 0))
        {
            // ... it's before 9:30 am ...
        }
于 2013-05-02T04:35:29.243 回答
0

<= 运算符没有为字符串的值定义。相反,您应该根据 DateTime 实例进行比较

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

于 2013-05-02T04:20:19.690 回答
0

不要把 DateTimes 变成字符串来比较,直接使用 DateTimes。

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

笔记

比较字符串:

用于比较String.Compare这样的字符串。

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

于 2013-05-02T04:21:53.340 回答
0

您应该直接比较DateTimes,而不是将它们转换为字符串。该<=运算符已实现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 对其进行排序。

于 2013-05-02T04:22:07.163 回答