C#用分钟限制小时

标签 c# asp.net datetime

我只想在 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/

相关文章:

c# - 如何使用 UNION 对字符/字符串数组进行分组?

asp.net - Web 应用程序中的后退按钮

c# - Access Modifier 选项在 RESX 文件中的实际作用是什么?

c# - 如何在 asp.net c# codebehind 中创建选取框?

javascript - Date.parse 的不同行为?

c# - .NET Core 控制台应用程序的 WebApplicationFactory 是否有等效项?

c# - 有没有办法将此枚举转换为正确的类型

c# - OOP中级教程

c# - 在 .NET 中解析文化特定的 Decimal 和 DateTime 值

java - 设置自己的日期或调用 new Date() 时使用 dateformat 打印日期是不同的