如何根据 2 小时设置定时器?
How to set timer based on 2 period of hours?
我有一个函数需要 运行 在 2 个不同的时间段。上午 8 点至上午 12 点时段 1,上午 12 点至上午 8 点时段 2。
我现在有 1 个计时器,每 1 小时 运行s 24/7。
如何将这个计时器分成两个独立的时间段?
我有一个预先编写的代码,但我认为这不是一种有效的方法,所以我想问问社区是否有更有效的方法来做到这一点。
下面是我的代码示例
if (DateTime.Now.Hour == 8 && DateTime.Now.Minute == 0)
{
LogMessageToFile("Running Peak Period - Period 1");
LogMessageToFile("Check will now do every 1 count");
//Code here
--SomeCodes--
}
else if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 0)
{
LogMessageToFile("Running Night Period - Period 2");
LogMessageToFile("Check will now do every 3 count");
//Code here
--SomeCodes--
}
我看到我的代码在早上 8 点和中午 12 点时只会 运行 一次。
结果应该是 运行 整个周期。
即早上 8 点到午夜 12 点,然后午夜 12 点到早上 8 点。
我建议尝试 'more-less' 比较而不是 equal-comparison。例如
if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour <= 12) // this means condition that current time is between 8 and 12 hours
{
//Period #1
}
else
{
//Period #2
}
更新:误读了你的问题。如果您希望代码在上午 8 点到中午 12 点 下午 之间执行,那么您应该根据 24 小时时间格式制定条件,例如:
if (DateTime.Now.Hour > 0 && DateTime.Now.Hour <= 8)
{
//Night time
}
else
{
//Peak time
}
解决方案:
将计时器间隔设置为 60 分钟,并将以下代码放入 Timer Tick 事件处理程序中。
int hour = DateTime.Now.Hour;
if ((hour > 8 && hour <= 23) || hour == 0) Console.WriteLine ("Work time");
if (hour > 0 && hour <= 8) Console.WriteLine ("Sleep time");
我有一个函数需要 运行 在 2 个不同的时间段。上午 8 点至上午 12 点时段 1,上午 12 点至上午 8 点时段 2。
我现在有 1 个计时器,每 1 小时 运行s 24/7。
如何将这个计时器分成两个独立的时间段?
我有一个预先编写的代码,但我认为这不是一种有效的方法,所以我想问问社区是否有更有效的方法来做到这一点。
下面是我的代码示例
if (DateTime.Now.Hour == 8 && DateTime.Now.Minute == 0)
{
LogMessageToFile("Running Peak Period - Period 1");
LogMessageToFile("Check will now do every 1 count");
//Code here
--SomeCodes--
}
else if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 0)
{
LogMessageToFile("Running Night Period - Period 2");
LogMessageToFile("Check will now do every 3 count");
//Code here
--SomeCodes--
}
我看到我的代码在早上 8 点和中午 12 点时只会 运行 一次。 结果应该是 运行 整个周期。
即早上 8 点到午夜 12 点,然后午夜 12 点到早上 8 点。
我建议尝试 'more-less' 比较而不是 equal-comparison。例如
if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour <= 12) // this means condition that current time is between 8 and 12 hours
{
//Period #1
}
else
{
//Period #2
}
更新:误读了你的问题。如果您希望代码在上午 8 点到中午 12 点 下午 之间执行,那么您应该根据 24 小时时间格式制定条件,例如:
if (DateTime.Now.Hour > 0 && DateTime.Now.Hour <= 8)
{
//Night time
}
else
{
//Peak time
}
解决方案:
将计时器间隔设置为 60 分钟,并将以下代码放入 Timer Tick 事件处理程序中。
int hour = DateTime.Now.Hour;
if ((hour > 8 && hour <= 23) || hour == 0) Console.WriteLine ("Work time");
if (hour > 0 && hour <= 8) Console.WriteLine ("Sleep time");