我只想在 12:30 -- 14:00 和 18:00 -- 21:00 之间启用复选框。
if (((DateTime.Now.Hour >= 12 || DateTime.Now.Minute >= 30) && DateTime.Now.Hour < 14) || (DateTime.Now.Hour >= 18 && DateTime.Now.Hour < 21))
{ ASPxCheckBox_ForceClot.Enabled = true; }
问题是分钟,12:30
DateTime.Now.Hour >= 12 || DateTime.Now.Minute >= 30
它拒绝 12:45 但它应该采用这个值
DateTime.Now.Hour >= 12 && DateTime.Now.Minute >= 30
它拒绝 13:12 但它应该采用这个值
提前致谢
最佳答案
我建议您改用一天中的实际时间(表示为 TimeSpan
值):
var firstPeriodStart = new TimeSpan(12, 30, 0);
var firstPeriodEnd = new TimeSpan(14, 0, 0);
var secondPeriodStart = new TimeSpan(18, 0, 0);
var secondPeriodEnd = new TimeSpan(21, 0, 0);
DateTime time = DateTime.Now.TimeOfDay;
if ((time >= firstPeriodStart && time < firstPeriodEnd) ||
(time >= secondPeriodStart && time < secondPeriodEnd))
{
ASPxCheckBox_ForceClot.Enabled = true;
}
更好的是 (IMO) 在 Noda Time 中使用 LocalTime
类型因为这代表了您真正感兴趣的内容。
您还应该记住,上面的代码使用的是服务器 上的本地时间 - 如果您的用户位于不同的时区,这样可以吗?
关于C#用分钟限制小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18975547/