【问题标题】:Calculate the difference in C#在C#中计算差异
【发布时间】:2022-12-15 15:58:17
【问题描述】:

鉴于此,我只有开始时间和结束时间值(例如 12:30、02:15、23:45 等)如何计算 C# 中 Hour.Minut 格式的差异, 请记住,时间可以跨越班次,这意味着开始时间是 15:30,结束时间是 04:30,或者开始时间是 08:30,结束时间是 15:00

我尝试使用 C# 中可用的 TimeSpan 对象

【问题讨论】:

  • 在从 endTime 减去 startTime 之前,检查 endTime 是否 > startTime - 如果不是,则先向 endTime 添加一天
  • 是的,无论如何我都解决了,但它似乎是正确的解决方案

标签: asp.net-core datetime time decimal c#-3.0


【解决方案1】:

这是你想要的吗?

TimeSpan ts1 = new TimeSpan(starthour,startmin,0);
    TimeSpan ts2 = new TimeSpan(endhour, endminute, 0);
    TimeSpan ts3 = new TimeSpan(24, 0, 0);
    TimeSpan ts = ts2.Subtract(ts1).TotalHours> 0 ? ts2.Subtract(ts1) : ts2.Subtract(ts1).Add(ts3);

【讨论】:

  • 是的,无论如何我都解决了,但它似乎是正确的解决方案
【解决方案2】:

公共静态十进制 GetHoursOutOfTime(字符串开始时间,字符串结束时间) { //时间计算逻辑,返回[Hours.Min] out of Start and End Time

        int StartDay = 16;
        int EndDay = 16;

        if (Convert.ToSingle(startTime.Replace(':', '.')) > Convert.ToSingle(endTime.Replace(':', '.')))
        {
            EndDay = 17;
        }

        int EndHrs = Convert.ToInt32(endTime.Substring(0, endTime.IndexOf(':')));
        int EndMin = Convert.ToInt32(endTime.Substring(endTime.IndexOf(':') + 1));

        int StartHrs = Convert.ToInt32(startTime.Substring(0, startTime.IndexOf(':')));
        int StartMin = Convert.ToInt32(startTime.Substring(startTime.IndexOf(':') + 1));

        DateTime dtEnd = new DateTime(2022, 11, EndDay, EndHrs, EndMin, 0);
        DateTime dtStart = new DateTime(2022, 11, StartDay, StartHrs, StartMin, 0);

        TimeSpan ts = dtEnd.Subtract(dtStart);
        return Convert.ToDecimal(Math.Abs(ts.Hours).ToString() + "." + Math.Abs(ts.Minutes).ToString());
    }

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2016-06-14
    • 2018-07-04
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多