我是编程新手。我在编写这行代码时遇到错误:
var time = DateTime.Now.ToShortTimeString().ToString();
var timePattern = "09:30";
if (time.ToString() <= timePattern.ToString())
{
//disable the button
}
错误显示:运算符'&lt; ='不能应用于'string'和'string'类型的操作数
有人能帮助我吗?
答案 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.Compare
到compare字符串。
<=
尚未针对字符串实施。
答案 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对其进行排序。