-1

我有一种方法可以计算两次之间的分钟数。像这样的东西:

DateTime UserLocalTime = DateTime.UtcNow.ConvertToUserTime(UserTimezoneID);

double TheOffset = (UserLocalTime - DateTime.UtcNow).TotalMinutes;

return TheOffset.ToString();

问题是它返回类似 119.83723 的东西,因为它正在计算分钟和秒等。

我怎样才能解决这个问题?恐怕有时它也会返回 120.11233 所以四舍五入也可能不会完全有帮助。

感谢您的建议。

Update1: (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalMinutes)); 返回 119。

更新2:我试过这个,看起来它可以工作,但是当偏移量很奇怪时会失败(有时可能是5:30,答案应该是330分钟)

int TheOffset = (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalHours));
TheOffset = TheOffset * 60;
4

2 回答 2

2
  • 你想只得到分钟而不是别的吗?只需使用Minutes而不是TotalMinutes.
  • 你想得到总分钟数,但不是低于它的任何度量吗?使用(int)TotalMinutes. 它会四舍五入。

恐怕有时它也会返回 120.11233 所以四舍五入也可能不会完全有帮助。

你能澄清一下吗?四舍五入120.11233将导致120......我认为这就是你想要的,对吧?

于 2012-05-10T23:59:13.210 回答
0

你可以使用:

  • Math.Round()获取最接近的整数
  • Math.Floor()获取小于或等于指定数字的最大整数。
  • Math.Ceiling()获取大于或等于指定数字的最小整数值。

  • 119,895 -> 地板 = 119,天花板 = 120,圆形 = 120

  • 119,175 -> 地板 = 119,天花板 = 120,圆形 = 119

将所需的功能应用于您的 TheOffset。

如果您需要天花板或地板,您可能应该反转使用的函数,如果负偏移或正偏移。

所以,你决定你想得到什么。

于 2012-05-11T00:08:19.547 回答