我在下面创建了2个Timespans:
TimeSpan currentTs = TimeSpan.FromSeconds(43995); //12:13:15
TimeSpan towTime = TimeSpan.FromSeconds(303072); //12:11:12
我试图在几分钟内找到差异(通过我传递它的秒数,看起来它们在不同的日子里)。我希望大约2分钟的差异,但实际上,我得到-57分钟。
int timeDifference = (int)currentTs.Subtract(towTime).Minutes;
有人可以解释我做错了吗?
答案 0 :(得分:5)
如果您只是寻找分钟之间的差异(不包括天,小时或秒),那么您可以使用
double timeDifference = currentTs.Minutes - towTime.Minutes; // 2
这只是分钟组件的差异。正如其他人所说,这些时间相隔3天,因此TimeSpan可能并不理想。
或者,如果您想要包含秒数,也可以使用
TimeSpan minutes1 = new TimeSpan (0, currentTs.Minutes, currentTs.Seconds);
TimeSpan minutes2 = new TimeSpan (0, towTime.Minutes, towTime.Seconds);
double timeDifference = minutes1.TotalMinutes - minutes2.TotalMinutes // 2.05;
答案 1 :(得分:3)
您正在寻找的TotalMinutes
属性不是Minutes
- 后者只是时差的分钟部分,前者是以小数分钟表示的全时差:
double timeDifference = currentTs.Subtract(towTime).TotalMinutes;
也更容易阅读:
double timeDifference = (currentTs - towTime).TotalMinutes;
答案 2 :(得分:3)
我猜你想完全忽略时间差异大约3天的事实。在这种情况下,如果你将除法后的余数除以86400(一天中的秒数)并将其传递给TimeSpan.FromSeconds,你应该希望得到你想要的东西:
TimeSpan currentTs = TimeSpan.FromSeconds(43995 % 86400); //12:13:15
TimeSpan towTime = TimeSpan.FromSeconds(303072 % 86400); //12:11:12, ignoring the 3 days.
double timeDifference = (currentTs - towTime).TotalMinutes;
当我尝试这个时,我得到timeDifference
的值为2.05。
当然,如果currentTs
当天早于towTime
(可能是因为午夜落在他们之间),时差就会变为负数。如果您仍想计算两者之间的分钟数,假设currentTs
总是在towTime
之后,那么您需要将{1440(一天中的分钟数)添加到{{ 1}}如果它是负面的:
timeDifference
答案 3 :(得分:1)
因为第二次的时间跨度不是12:11:12,而是3:12:11:12。
所以你会得到一个负面的结果,如果你做了总分钟(因为它表示类似于-2天,57分钟,57秒),那将是成千上万的......因为你只是要求分钟而不是TotalMinutes你刚拿到-57。
答案 4 :(得分:0)
currentTime小于towTime(你似乎缺少一个数字)。