在C#中编写这个逻辑有一个很简洁的方法吗?
if ((DateTime.Now >= "8:00 AM") && (DateTime.Now < 5:00 PM))
{// do something}
我正在制作一个演示应用程序,我想在工作日发生一些事情,但我不希望这个代码突出很多(很多演员=坏)。 (因为我希望我的演示内容更容易看到。
答案 0 :(得分:11)
嗯,你可以这样做:
DateTime now = DateTime.Now;
if (now.Hour < 8 || now.Hour >= 17)
请注意,我通常更喜欢只使用DateTime.Now
属性一次,将结果复制到如上所述的局部变量中 - 这样您就不会因为时间而变得奇怪在通话之间切换。这里不是问题,但可能在其他情况下。
如果你想以这种方式处理事情,另一种可能性就是使用DateTime.TimeOfDay
。我认为上面的内容很简单。
DateTime now = DateTime.Now;
if (now.Hour >= 8 && now.Hour < 17)
答案 1 :(得分:4)
我认为你想要做的是这样的事情:
var now = DateTime.Now;
if (now.Hour >= 8 && now.Hour < 17)
答案 2 :(得分:1)
如果你想让它“漂亮”,你也可以使用扩展方法:
public static class DateTimeHelper
{
public static DateTime Time(this string time)
{
DateTime theTime = DateTime.Parse(time);
return theTime;
}
}
...
if (DateTime.Now < "8:00 AM".Time() && DateTime.Now > "5:00 PM".Time())
{
// do something
}
答案 3 :(得分:0)
如果您可以使用正确格式为当前日期和开始/结束时间格式化字符串,则可以使用类似的内容。
DateTime now = DateTime.Now;
DateTime start = Convert.ToDateTime(now.Date.ToShortDateString() + " 8:00:00 AM");
DateTime end = Convert.ToDateTime(now.Date.ToShortDateString() + " 5:00:00 PM");
if (now >= start && now < end)
{
}
我仍然认为使用其他人发布的小时方法更清晰,但这是一种方法,可以提供类似于您提出问题的答案。