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

本文关键字:分钟 为单位 时间 偏移量 | 更新日期: 2023-09-27 18:33:45

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

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).总分钟数));返回 119。

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

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

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

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

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

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

您可以使用:

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

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

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

将所需的函数应用于偏移量。

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

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