【发布时间】: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
我有两次像 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
假设时间在字符串中给出。然后您可以拆分时间以获得等效的分钟数。现在它变成了一个简单的数学问题,现在相应地进行加减法。
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}";
也使用相同的概念进行减法。
【讨论】:
您可以将时间转换为 TimeSpan.FromMinutes 并使用 TimeSpan.TotalHours 和 TimeSpan.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
【讨论】:
时间跨度可以解决问题
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);
【讨论】:
{08:16:35}输出应该是这个496:35