c# - 检查当前日期时间是否在晚上 8 点到早上 8 点之间,并计算到早上 8 点之前剩余的总小时数

标签 c# datetime

场景如下,我需要知道当前日期时间是否在晚上 8:00 (20:00) 和上午 8:00 (08:00) 之间。如果是,我需要得到剩余的总小时数,直到 08:00 AM (08:00)。

我的尝试:

TimeSpan start = TimeSpan.Parse("20:00");
TimeSpan end = TimeSpan.Parse("08:00");  
TimeSpan now = DateTime.Now.TimeOfDay;

bool flag = false;
if (start <= end)
{
     if (now >= start && now <= end)
     {
         flag = true;
     }
}
else
{      
    if (now >= start || now <= end)
    {
        flag = true;
    }
}

if (flag)
{
    /// calculate hours?
}

最佳答案

这是一种简单的方法:

var date = DateTime.Now;
if(date.Hour >= 20 || date.Hour < 8)
{
    var DateTime8 = date.Date.AddHours((date.Hour > 8) ? 24 + 8 : 8);
    TimeSpan diff = DateTime8 - date;
}

关于c# - 检查当前日期时间是否在晚上 8 点到早上 8 点之间,并计算到早上 8 点之前剩余的总小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46109215/

相关文章:

unit-testing - 为什么在测试DateTime相等性时此单元测试失败?

ruby-on-rails - Ruby Rails Time.change 没有像我预期的那样工作......我已经检查了文档!

c# - 字符串变量可以设置多少个字符?

C#:如何简化这个数字字符串到各种日期部分的代码

c# - Tesseract OCR - 如何训练这样的图像

将 UTC 转换为本地时间的 JavaScript 在 Chrome 中不起作用

java - 时区更改会影响 SSL 握手吗?

c# - web.config 中的 "bindingRedirect"不起作用

c# - LINQ:当连接表中的计数为零时列出所有

python - 在 Pandas 中逐行比较一个数据帧中的日期列值与另一个数据帧中的两个日期列