C# 以整分钟为单位的时间偏移量(c)#

C# 以整分钟为单位的时间偏移量(c)#,c#,C#,我有一个计算两次之间分钟数的方法。大概是这样的: DateTime UserLocalTime = DateTime.UtcNow.ConvertToUserTime(UserTimezoneID); double TheOffset = (UserLocalTime - DateTime.UtcNow).TotalMinutes; return TheOffset.ToString(); 问题是它返回了类似119.83723的值,因为它正在计算分和秒等等 我怎样才能解决这个问题?我担心有

我有一个计算两次之间分钟数的方法。大概是这样的:

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分钟)

  • 你只想得到分钟而不想得到别的吗?只需使用
    Minutes
    而不是
    TotalMinutes
  • 是否要获取总分钟数,但不获取其下的任何度量值?使用
    (int)TotalMinutes
    。它会变圆的
我担心有时它也会返回120.11233,所以四舍五入可能也不会完全有帮助

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

你可以使用:

  • 获取最接近的整数
  • 获取小于或等于指定数字的最大整数
  • 获取大于或等于指定数字的最小整数值

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

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

将所需的功能应用于补偿

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


所以,你决定你想要什么。

有趣的是:当我改为.Minutes时,它会返回59@frenchie:是的,
Minutes
只是分钟;不包括小时数等。我真的不确定哪一个回答了你的问题,所以我把它们都加上了。好吧,如果我解析为int,它现在返回119而不是预期的120。(int)(Math.Round((UserLocalTime-DateTime.UtcNow.TotalMinutes));返回119。@frenchie:那么。。。你是在四舍五入到最接近的半小时还是什么的?不,我的意思是,用120.232424,我会得到地板=120,天花板=121和四舍五入=120。换句话说,如果数字大于或小于120,没有函数返回我需要的值。
int TheOffset = (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalHours));
TheOffset = TheOffset * 60;