C# 如何检查时间是否在第二天

C# 如何检查时间是否在第二天,c#,.net,C#,.net,我有一个windows应用程序,用户在其中输入开始时间和结束时间,如何检查结束时间是否是第二天的时间 example: start time end time 1:00:00 AM 5:00:00 AM 5:00:00 AM 10:00:00 AM 10:00:00 AM 5:00:00 PM 5:00:00 PM 10:00

我有一个windows应用程序,用户在其中输入开始时间和结束时间,如何检查结束时间是否是第二天的时间

example: start time           end time
          1:00:00 AM          5:00:00 AM
          5:00:00 AM          10:00:00 AM
          10:00:00 AM          5:00:00 PM
          5:00:00 PM          10:00:00 PM
          10:00:00 PM          1:00:00 AM --(next day)
          1:00:00 AM          5:00:00 AM
var t1 = "10:00:00 PM";
var t2 = "01:00:00 AM";

var time1 = DateTime.ParseExact(t1, "hh:mm:ss tt", CultureInfo.InvariantCulture);
var time2 = DateTime.ParseExact(t2, "hh:mm:ss tt", CultureInfo.InvariantCulture);

if (time2 < time1)
{
    Console.WriteLine("next day");
}
else
{
    Console.WriteLine("same day");
}
我正在尝试以下内容:

private void GenerateReportWithStartTimeandEndTime(string StartTime, string EndTime, string DailyTime)
{
    DateTime tempStartTime = DateTime.ParseExact(StartTime, "HH:mm:ss tt", CultureInfo.InvariantCulture);
    DateTime tempEndTime = DateTime.ParseExact(EndTime, "HH:mm:ss tt", CultureInfo.InvariantCulture);

    DateTime midNightToday = DateTime.Today.AddDays(1);
    var StarthourDifference = (midNightToday - tempStartTime).TotalHours;
    var EndhourDifference = (midNightToday - tempEndTime).TotalHours;
    if (StarthourDifference - EndhourDifference > 0)
    {

    }
    else
    {

    }
}
怎么样

bool IsNextDay = EndTime < StartTime;
bool IsNextDay=EndTime
代码:

//案例1
TimeSpan StartTime=DateTime.ParseExact(“下午5:00:00”,“h:mm:ss tt”,CultureInfo.InvariantCulture);
TimeSpan-EndTime=DateTime.ParseExact(“10:00:00 PM”,“h:mm:ss tt”,CultureInfo.InvariantCulture);
bool IsNextDay=结束时间<开始时间//错误的
//案例2
TimeSpan StartTime2=DateTime.ParseExact(“10:00:00 PM”,“h:mm:ss tt”,CultureInfo.InvariantCulture)。日期时间;
TimeSpan EndTime2=DateTime.ParseExact(“1:00:00 AM”,“h:mm:ss tt”,CultureInfo.InvariantCulture)。时间日期;
bool IsNextDay2=EndTime2
这很好用:

对于第二天的时间(因为差异始终为5小时),如果
hh:mm:ss tt
格式中的结束解析时间小于开始解析时间,则为第二天时间

example: start time           end time
          1:00:00 AM          5:00:00 AM
          5:00:00 AM          10:00:00 AM
          10:00:00 AM          5:00:00 PM
          5:00:00 PM          10:00:00 PM
          10:00:00 PM          1:00:00 AM --(next day)
          1:00:00 AM          5:00:00 AM
var t1 = "10:00:00 PM";
var t2 = "01:00:00 AM";

var time1 = DateTime.ParseExact(t1, "hh:mm:ss tt", CultureInfo.InvariantCulture);
var time2 = DateTime.ParseExact(t2, "hh:mm:ss tt", CultureInfo.InvariantCulture);

if (time2 < time1)
{
    Console.WriteLine("next day");
}
else
{
    Console.WriteLine("same day");
}
var t1=“10:00:00 PM”;
var t2=“01:00:00 AM”;
var time1=DateTime.ParseExact(t1,“hh:mm:ss tt”,CultureInfo.InvariantCulture);
var time2=DateTime.ParseExact(t2,“hh:mm:ss tt”,CultureInfo.InvariantCulture);
如果(时间2<时间1)
{
Console.WriteLine(“第二天”);
}
其他的
{
Console.WriteLine(“同一天”);
}

您需要这样的条件:(startDate>EndDate)和
(EndDate-startDate)>24小时

如果只有空闲时间值,那么可以应用的唯一逻辑是检查结束值是否小于开始值,并假设这意味着第二天。如果这不是你想做的,你需要解释我们(和计算机)是如何在没有足够信息的情况下神奇地确定这一点的。具体的开始和结束时间是什么?一天的开始和结束时间对于凌晨1点到5点的间隔,你怎么知道不是一天后5点?是的,你的观点有道理,谢谢Hans。我现在应该考虑一下,它可能会解决我的问题,也可能是
@LasseV.Karlsen虽然评论是对的,但如果时差可以是24小时,整个OPs规范就会变得支离破碎(这已经很糟糕了,但如果时差可以是24小时或更长,它就会变得非常糟糕:-),我知道“尽可能糟糕”,我每天都要处理软件中的日期和时间,并且必须处理这些精确的问题,包括跨越两个以上日期的仅限时间的数据。