【问题标题】:is there any solution to find the time span between two time duration有什么解决方案可以找到两个持续时间之间的时间跨度
【发布时间】:2023-01-20 13:14:11
【问题描述】:

我有两次像 100:45 和 395:50 我需要在 asp.net web 应用程序中找到这两个时间之间的减法和加法

我会这样期待 100:45+395:50=496:35 和 100:45-395:50=295:05

【问题讨论】:

  • 您是否尝试过使用TimeSpan

标签: c# math asp.net-web-api time-difference


【解决方案1】:

假设时间在字符串中给出。然后您可以拆分时间以获得等效的分钟数。现在它变成了一个简单的数学问题,现在相应地进行加减法。

string time = "100:45";
string[] parts = time.Split(':');
int hours = int.Parse(parts[0]);
int minutes = int.Parse(parts[1]);
int totalMinutes = hours * 60 + minutes;

所以对于你的情况

int mins1 = 100 * 60 + 45;
int mins2 = 395 * 60 + 50;
int totalMinutes = mins1 + mins2;
int totalHours = totalMinutes / 60;
int remainingMinutes = totalMinutes % 60;
string sum = $"{totalHours}:{remainingMinutes}";

也使用相同的概念进行减法。

【讨论】:

    【解决方案2】:

    您可以将时间转换为 TimeSpan.FromMinutes 并使用 TimeSpan.TotalHoursTimeSpan.Minutes 获得所需的输出

    string s1 = "100:45";
    string s2 = "395:50";
    
    TimeSpan spWorkMin = TimeSpan.FromMinutes(int.Parse(s1.Split(':')[0]) * 60 + 
                                              int.Parse(s2.Split(':')[0]) * 60 +
                                              int.Parse(s1.Split(':')[1]) + 
                                              int.Parse(s2.Split(':')[1]));
    var sum =string.Format("{0:00}:{1:00}", (int)tSum.TotalHours, tSum.Minutes);//496:35
    
    TimeSpan tsub = TimeSpan.FromMinutes(int.Parse(s1.Split(':')[0]) * 60 - 
                                         int.Parse(s2.Split(':')[0]) * 60 +
                                         int.Parse(s1.Split(':')[1]) - 
                                         int.Parse(s2.Split(':')[1]));
    var subtract = string.Format("{0:00}:{1:00}", Math.Abs((int)tsub.TotalHours),Math.Abs(tsub.Minutes)); //295:05
    

    【讨论】:

      【解决方案3】:

      时间跨度可以解决问题

              TimeSpan ts1 = new TimeSpan(0, 100, 45);
              TimeSpan ts2 = new TimeSpan(0, 395, 50);
      
              var tsResult = ts1 + ts2;
              string outPut = string.Format("{0}:{1}", Math.Floor(tsResult.TotalMinutes), tsResult.Seconds);
      

      【讨论】:

      • ts1 + ts2 retutn {08:16:35}输出应该是这个496:35
      猜你喜欢
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多