c#中整个分钟的时间偏移

时间:2012-05-10 23:57:36

标签: c#

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

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。

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

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

2 个答案:

答案 0 :(得分:2)

  • 你想只得到分钟而没有别的吗?只需使用Minutes代替TotalMinutes
  • 您想获得总分钟数,但不是下面的任何指标吗?使用(int)TotalMinutes。它会圆了下来。
  

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

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

答案 1 :(得分:0)

您可以使用:

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

  • 119,895 - >楼层= 119,天花板= 120,舍入= 120

  • 119,175 - >楼层= 119,天花板= 120,回合= 119

将所需功能应用于TheOffset。

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

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